From: Stefan Pintilie Date: Thu, 12 Jul 2018 20:18:57 +0000 (+0000) Subject: [PowerPC] [NFC] Update __float128 tests X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a120e0c37ce7bcd10b01bfa77d20710eaac4d844;p=llvm [PowerPC] [NFC] Update __float128 tests Add the two options -ppc-vsr-nums-as-vr and -ppc-asm-full-reg-names to the __float128 tests. Then modify the tests as required. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336940 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/PowerPC/f128-aggregates.ll b/test/CodeGen/PowerPC/f128-aggregates.ll index fb2700e1c61..8c934ba6586 100644 --- a/test/CodeGen/PowerPC/f128-aggregates.ll +++ b/test/CodeGen/PowerPC/f128-aggregates.ll @@ -1,7 +1,9 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ -; RUN: -enable-ppc-quad-precision -verify-machineinstrs < %s | FileCheck %s +; RUN: -enable-ppc-quad-precision -verify-machineinstrs \ +; RUN: -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck %s ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-unknown \ -; RUN: -enable-ppc-quad-precision -verify-machineinstrs < %s \ +; RUN: -enable-ppc-quad-precision -verify-machineinstrs \ +; RUN: -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s \ ; RUN: | FileCheck -check-prefix=CHECK-BE %s ; Testing homogeneous aggregates. @@ -15,11 +17,11 @@ define fp128 @testArray_01(fp128* nocapture readonly %sa) { ; CHECK-LABEL: testArray_01: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 34, 32(3) +; CHECK-NEXT: lxv v2, 32(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testArray_01: -; CHECK-BE: lxv 34, 32(3) +; CHECK-BE: lxv v2, 32(r3) ; CHECK-BE-NEXT: blr entry: %arrayidx = getelementptr inbounds fp128, fp128* %sa, i64 2 @@ -31,13 +33,13 @@ entry: define fp128 @testArray_02() { ; CHECK-LABEL: testArray_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 3, 2, .LC0@toc@ha -; CHECK-NEXT: ld 3, .LC0@toc@l(3) -; CHECK-NEXT: lxv 34, 32(3) +; CHECK-NEXT: addis r3, r2, .LC0@toc@ha +; CHECK-NEXT: ld r3, .LC0@toc@l(r3) +; CHECK-NEXT: lxv v2, 32(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testArray_02: -; CHECK-BE: lxv 34, 32(3) +; CHECK-BE: lxv v2, 32(r3) ; CHECK-BE-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds ([3 x fp128], [3 x fp128]* @a1, @@ -62,11 +64,11 @@ entry: define fp128 @testStruct_02([8 x fp128] %a.coerce) { ; CHECK-LABEL: testStruct_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vmr 2, 9 +; CHECK-NEXT: vmr v2, v9 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testStruct_02: -; CHECK-BE: vmr 2, 9 +; CHECK-BE: vmr v2, v9 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.7.extract = extractvalue [8 x fp128] %a.coerce, 7 @@ -80,28 +82,28 @@ define fp128 @testStruct_03(%struct.With9fp128params* byval nocapture readonly align 16 %a) { ; CHECK-LABEL: testStruct_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 34, 128(1) -; CHECK-NEXT: std 10, 88(1) -; CHECK-NEXT: std 9, 80(1) -; CHECK-NEXT: std 8, 72(1) -; CHECK-NEXT: std 7, 64(1) -; CHECK-NEXT: std 6, 56(1) -; CHECK-NEXT: std 5, 48(1) -; CHECK-NEXT: std 4, 40(1) -; CHECK-NEXT: std 3, 32(1) +; CHECK-NEXT: lxv v2, 128(r1) +; CHECK-NEXT: std r10, 88(r1) +; CHECK-NEXT: std r9, 80(r1) +; CHECK-NEXT: std r8, 72(r1) +; CHECK-NEXT: std r7, 64(r1) +; CHECK-NEXT: std r6, 56(r1) +; CHECK-NEXT: std r5, 48(r1) +; CHECK-NEXT: std r4, 40(r1) +; CHECK-NEXT: std r3, 32(r1) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testStruct_03: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: lxv 34, 144(1) -; CHECK-BE-NEXT: std 10, 104(1) -; CHECK-BE-NEXT: std 9, 96(1) -; CHECK-BE-NEXT: std 8, 88(1) -; CHECK-BE-NEXT: std 7, 80(1) -; CHECK-BE-NEXT: std 6, 72(1) -; CHECK-BE-NEXT: std 5, 64(1) -; CHECK-BE-NEXT: std 4, 56(1) -; CHECK-BE-NEXT: std 3, 48(1) +; CHECK-BE-NEXT: lxv v2, 144(r1) +; CHECK-BE-NEXT: std r10, 104(r1) +; CHECK-BE-NEXT: std r9, 96(r1) +; CHECK-BE-NEXT: std r8, 88(r1) +; CHECK-BE-NEXT: std r7, 80(r1) +; CHECK-BE-NEXT: std r6, 72(r1) +; CHECK-BE-NEXT: std r5, 64(r1) +; CHECK-BE-NEXT: std r4, 56(r1) +; CHECK-BE-NEXT: std r3, 48(r1) ; CHECK-BE-NEXT: blr entry: %a7 = getelementptr inbounds %struct.With9fp128params, @@ -114,11 +116,11 @@ entry: define fp128 @testStruct_04([8 x fp128] %a.coerce) { ; CHECK-LABEL: testStruct_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vmr 2, 5 +; CHECK-NEXT: vmr v2, v5 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testStruct_04: -; CHECK-BE: vmr 2, 5 +; CHECK-BE: vmr v2, v5 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.3.extract = extractvalue [8 x fp128] %a.coerce, 3 @@ -157,12 +159,12 @@ entry: define fp128 @testHUnion_03([3 x fp128] %a.coerce) { ; CHECK-LABEL: testHUnion_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vmr 2, 3 +; CHECK-NEXT: vmr v2, v3 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testHUnion_03: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vmr 2, 3 +; CHECK-BE-NEXT: vmr v2, v3 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.1.extract = extractvalue [3 x fp128] %a.coerce, 1 @@ -173,12 +175,12 @@ entry: define fp128 @testHUnion_04([3 x fp128] %a.coerce) { ; CHECK-LABEL: testHUnion_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vmr 2, 4 +; CHECK-NEXT: vmr v2, v4 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testHUnion_04: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vmr 2, 4 +; CHECK-BE-NEXT: vmr v2, v4 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.2.extract = extractvalue [3 x fp128] %a.coerce, 2 @@ -194,11 +196,11 @@ entry: define fp128 @testMixedAggregate([3 x i128] %a.coerce) { ; CHECK-LABEL: testMixedAggregate: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrdd 34, 8, 7 +; CHECK-NEXT: mtvsrdd v2, r8, r7 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testMixedAggregate: -; CHECK-BE: mtvsrdd 34, 8, 7 +; CHECK-BE: mtvsrdd v2, r8, r7 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.2.extract = extractvalue [3 x i128] %a.coerce, 2 @@ -210,11 +212,11 @@ entry: define fp128 @testMixedAggregate_02([4 x i128] %a.coerce) { ; CHECK-LABEL: testMixedAggregate_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrdd 34, 6, 5 +; CHECK-NEXT: mtvsrdd v2, r6, r5 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testMixedAggregate_02: -; CHECK-BE: mtvsrdd 34, 6, 5 +; CHECK-BE: mtvsrdd v2, r6, r5 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.1.extract = extractvalue [4 x i128] %a.coerce, 1 @@ -226,13 +228,13 @@ entry: define fp128 @testMixedAggregate_03([4 x i128] %sa.coerce) { ; CHECK-LABEL: testMixedAggregate_03: ; CHECK: # %bb.0: # %entry -; CHECK-DAG: mtvsrwa 34, 3 -; CHECK-DAG: mtvsrdd 35, 6, 5 -; CHECK: mtvsrd 36, 10 -; CHECK: xscvsdqp 2, 2 -; CHECK-DAG: xscvsdqp [[REG:[0-9]+]], 4 -; CHECK-DAG: xsaddqp 2, 3, 2 -; CHECK: xsaddqp 2, 2, [[REG]] +; CHECK-DAG: mtvsrwa v2, r3 +; CHECK-DAG: mtvsrdd v3, r6, r5 +; CHECK: mtvsrd v4, r10 +; CHECK: xscvsdqp v2, v2 +; CHECK-DAG: xscvsdqp v[[REG:[0-9]+]], v4 +; CHECK-DAG: xsaddqp v2, v3, v2 +; CHECK: xsaddqp v2, v2, v[[REG]] ; CHECK-NEXT: blr entry: %sa.coerce.fca.0.extract = extractvalue [4 x i128] %sa.coerce, 0 @@ -254,28 +256,28 @@ entry: define fp128 @testNestedAggregate(%struct.MixedC* byval nocapture readonly align 16 %a) { ; CHECK-LABEL: testNestedAggregate: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: std 8, 72(1) -; CHECK-NEXT: std 7, 64(1) -; CHECK-NEXT: std 10, 88(1) -; CHECK-NEXT: std 9, 80(1) -; CHECK-NEXT: lxv 34, 64(1) -; CHECK-NEXT: std 6, 56(1) -; CHECK-NEXT: std 5, 48(1) -; CHECK-NEXT: std 4, 40(1) -; CHECK-NEXT: std 3, 32(1) +; CHECK-NEXT: std r8, 72(r1) +; CHECK-NEXT: std r7, 64(r1) +; CHECK-NEXT: std r10, 88(r1) +; CHECK-NEXT: std r9, 80(r1) +; CHECK-NEXT: lxv v2, 64(r1) +; CHECK-NEXT: std r6, 56(r1) +; CHECK-NEXT: std r5, 48(r1) +; CHECK-NEXT: std r4, 40(r1) +; CHECK-NEXT: std r3, 32(r1) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testNestedAggregate: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: std 8, 88(1) -; CHECK-BE-NEXT: std 7, 80(1) -; CHECK-BE-NEXT: std 10, 104(1) -; CHECK-BE-NEXT: std 9, 96(1) -; CHECK-BE-NEXT: lxv 34, 80(1) -; CHECK-BE-NEXT: std 6, 72(1) -; CHECK-BE-NEXT: std 5, 64(1) -; CHECK-BE-NEXT: std 4, 56(1) -; CHECK-BE-NEXT: std 3, 48(1) +; CHECK-BE-NEXT: std r8, 88(r1) +; CHECK-BE-NEXT: std r7, 80(r1) +; CHECK-BE-NEXT: std r10, 104(r1) +; CHECK-BE-NEXT: std r9, 96(r1) +; CHECK-BE-NEXT: lxv v2, 80(r1) +; CHECK-BE-NEXT: std r6, 72(r1) +; CHECK-BE-NEXT: std r5, 64(r1) +; CHECK-BE-NEXT: std r4, 56(r1) +; CHECK-BE-NEXT: std r3, 48(r1) ; CHECK-BE-NEXT: blr entry: %c = getelementptr inbounds %struct.MixedC, %struct.MixedC* %a, i64 0, i32 1, i32 1 @@ -287,11 +289,11 @@ entry: define fp128 @testUnion_01([1 x i128] %a.coerce) { ; CHECK-LABEL: testUnion_01: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrdd 34, 4, 3 +; CHECK-NEXT: mtvsrdd v2, r4, r3 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testUnion_01: -; CHECK-BE: mtvsrdd 34, 4, 3 +; CHECK-BE: mtvsrdd v2, r4, r3 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.0.extract = extractvalue [1 x i128] %a.coerce, 0 @@ -303,11 +305,11 @@ entry: define fp128 @testUnion_02([1 x i128] %a.coerce) { ; CHECK-LABEL: testUnion_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrdd 34, 4, 3 +; CHECK-NEXT: mtvsrdd v2, r4, r3 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testUnion_02: -; CHECK-BE: mtvsrdd 34, 4, 3 +; CHECK-BE: mtvsrdd v2, r4, r3 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.0.extract = extractvalue [1 x i128] %a.coerce, 0 @@ -319,11 +321,11 @@ entry: define fp128 @testUnion_03([4 x i128] %a.coerce) { ; CHECK-LABEL: testUnion_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrdd 34, 8, 7 +; CHECK-NEXT: mtvsrdd v2, r8, r7 ; CHECK-NEXT: blr ; CHECK-BE-LABEL: testUnion_03: -; CHECK-BE: mtvsrdd 34, 8, 7 +; CHECK-BE: mtvsrdd v2, r8, r7 ; CHECK-BE-NEXT: blr entry: %a.coerce.fca.2.extract = extractvalue [4 x i128] %a.coerce, 2 @@ -335,26 +337,26 @@ entry: define fp128 @sum_float128(i32 signext %count, ...) { ; CHECK-LABEL: sum_float128: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 11, 2, .LCPI17_0@toc@ha -; CHECK-NEXT: cmpwi 0, 3, 1 -; CHECK-NEXT: std 10, 88(1) -; CHECK-NEXT: std 9, 80(1) -; CHECK-NEXT: std 8, 72(1) -; CHECK-NEXT: std 7, 64(1) -; CHECK-NEXT: std 6, 56(1) -; CHECK-NEXT: std 5, 48(1) -; CHECK-NEXT: std 4, 40(1) -; CHECK-NEXT: addi 11, 11, .LCPI17_0@toc@l -; CHECK-NEXT: lxvx 34, 0, 11 -; CHECK-NEXT: bltlr 0 +; CHECK-NEXT: addis r11, r2, .LCPI17_0@toc@ha +; CHECK-NEXT: cmpwi cr0, r3, 1 +; CHECK-NEXT: std r10, 88(r1) +; CHECK-NEXT: std r9, 80(r1) +; CHECK-NEXT: std r8, 72(r1) +; CHECK-NEXT: std r7, 64(r1) +; CHECK-NEXT: std r6, 56(r1) +; CHECK-NEXT: std r5, 48(r1) +; CHECK-NEXT: std r4, 40(r1) +; CHECK-NEXT: addi r11, r11, .LCPI17_0@toc@l +; CHECK-NEXT: lxvx v2, 0, r11 +; CHECK-NEXT: bltlr cr0 ; CHECK-NEXT: # %bb.1: # %if.end -; CHECK-NEXT: addi 3, 1, 40 -; CHECK-NEXT: lxvx 35, 0, 3 -; CHECK-NEXT: xsaddqp 2, 3, 2 -; CHECK-NEXT: lxv 35, 16(3) -; CHECK-NEXT: addi 3, 1, 72 -; CHECK-NEXT: std 3, -8(1) -; CHECK-NEXT: xsaddqp 2, 2, 3 +; CHECK-NEXT: addi r3, r1, 40 +; CHECK-NEXT: lxvx v3, 0, r3 +; CHECK-NEXT: xsaddqp v2, v3, v2 +; CHECK-NEXT: lxv v3, 16(r3) +; CHECK-NEXT: addi r3, r1, 72 +; CHECK-NEXT: std r3, -8(r1) +; CHECK-NEXT: xsaddqp v2, v2, v3 ; CHECK-NEXT: blr entry: %ap = alloca i8*, align 8 diff --git a/test/CodeGen/PowerPC/f128-arith.ll b/test/CodeGen/PowerPC/f128-arith.ll index 5f1296e7b9b..955d59d40d5 100644 --- a/test/CodeGen/PowerPC/f128-arith.ll +++ b/test/CodeGen/PowerPC/f128-arith.ll @@ -1,5 +1,6 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ -; RUN: -enable-ppc-quad-precision -verify-machineinstrs < %s | FileCheck %s +; RUN: -enable-ppc-quad-precision -verify-machineinstrs \ +; RUN: -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s ; Function Attrs: norecurse nounwind define void @qpAdd(fp128* nocapture readonly %a, fp128* nocapture %res) { @@ -151,7 +152,7 @@ entry: define fp128 @qp_sin(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_sin: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl sinf128 ; CHECK: blr entry: @@ -163,7 +164,7 @@ declare fp128 @llvm.sin.f128(fp128 %Val) define fp128 @qp_cos(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_cos: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl cosf128 ; CHECK: blr entry: @@ -175,7 +176,7 @@ declare fp128 @llvm.cos.f128(fp128 %Val) define fp128 @qp_log(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_log: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl logf128 ; CHECK: blr entry: @@ -187,7 +188,7 @@ declare fp128 @llvm.log.f128(fp128 %Val) define fp128 @qp_log10(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_log10: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl log10f128 ; CHECK: blr entry: @@ -199,7 +200,7 @@ declare fp128 @llvm.log10.f128(fp128 %Val) define fp128 @qp_log2(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_log2: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl log2f128 ; CHECK: blr entry: @@ -212,8 +213,8 @@ declare fp128 @llvm.log2.f128(fp128 %Val) define fp128 @qp_minnum(fp128* nocapture readonly %a, fp128* nocapture readonly %b) { ; CHECK-LABEL: qp_minnum: -; CHECK: lxv 34, 0(3) -; CHECK: lxv 35, 0(4) +; CHECK: lxv v2, 0(r3) +; CHECK: lxv v3, 0(r4) ; CHECK: bl fminf128 ; CHECK: blr entry: @@ -227,8 +228,8 @@ declare fp128 @llvm.minnum.f128(fp128 %Val0, fp128 %Val1) define fp128 @qp_maxnum(fp128* nocapture readonly %a, fp128* nocapture readonly %b) { ; CHECK-LABEL: qp_maxnum: -; CHECK: lxv 34, 0(3) -; CHECK: lxv 35, 0(4) +; CHECK: lxv v2, 0(r3) +; CHECK: lxv v3, 0(r4) ; CHECK: bl fmaxf128 ; CHECK: blr entry: @@ -242,8 +243,8 @@ declare fp128 @llvm.maxnum.f128(fp128 %Val0, fp128 %Val1) define fp128 @qp_pow(fp128* nocapture readonly %a, fp128* nocapture readonly %b) { ; CHECK-LABEL: qp_pow: -; CHECK: lxv 34, 0(3) -; CHECK: lxv 35, 0(4) +; CHECK: lxv v2, 0(r3) +; CHECK: lxv v3, 0(r4) ; CHECK: bl powf128 ; CHECK: blr entry: @@ -256,7 +257,7 @@ declare fp128 @llvm.pow.f128(fp128 %Val, fp128 %Power) define fp128 @qp_exp(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_exp: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl expf128 ; CHECK: blr entry: @@ -268,7 +269,7 @@ declare fp128 @llvm.exp.f128(fp128 %Val) define fp128 @qp_exp2(fp128* nocapture readonly %a) { ; CHECK-LABEL: qp_exp2: -; CHECK: lxv 34, 0(3) +; CHECK: lxv v2, 0(r3) ; CHECK: bl exp2f128 ; CHECK: blr entry: @@ -281,8 +282,8 @@ declare fp128 @llvm.exp2.f128(fp128 %Val) define void @qp_powi(fp128* nocapture readonly %a, i32* nocapture readonly %b, fp128* nocapture %res) { ; CHECK-LABEL: qp_powi: -; CHECK: lxv 34, 0(3) -; CHECK: lwz 3, 0(4) +; CHECK: lxv v2, 0(r3) +; CHECK: lwz r3, 0(r4) ; CHECK: bl __powikf2 ; CHECK: blr entry: diff --git a/test/CodeGen/PowerPC/f128-compare.ll b/test/CodeGen/PowerPC/f128-compare.ll index b9b6ccb6baa..fea920f6ae1 100644 --- a/test/CodeGen/PowerPC/f128-compare.ll +++ b/test/CodeGen/PowerPC/f128-compare.ll @@ -1,5 +1,6 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ -; RUN: -enable-ppc-quad-precision -verify-machineinstrs < %s | FileCheck %s +; RUN: -enable-ppc-quad-precision -verify-machineinstrs \ +; RUN: -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s @a_qp = common global fp128 0xL00000000000000000000000000000000, align 16 @b_qp = common global fp128 0xL00000000000000000000000000000000, align 16 @@ -14,7 +15,7 @@ entry: ret i32 %conv ; CHECK-LABEL: greater_qp ; CHECK: xscmpuqp -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, 1 +; CHECK: isel r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, gt ; CHECK: blr } @@ -28,7 +29,7 @@ entry: ret i32 %conv ; CHECK-LABEL: less_qp ; CHECK: xscmpuqp -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, 0 +; CHECK: isel r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, lt ; CHECK: blr } @@ -42,8 +43,8 @@ entry: ret i32 %conv ; CHECK-LABEL: greater_eq_qp ; CHECK: xscmpuqp -; CHECK: cror [[REG:[0-9]+]], {{[0-9]+}}, 0 -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, [[REG]] +; CHECK: cror 4*cr[[REG:[0-9]+]]+lt, un, lt +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, 4*cr[[REG]]+lt ; CHECK: blr } @@ -57,8 +58,8 @@ entry: ret i32 %conv ; CHECK-LABEL: less_eq_qp ; CHECK: xscmpuqp -; CHECK: cror [[REG:[0-9]+]], {{[0-9]+}}, 1 -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, [[REG]] +; CHECK: cror 4*cr[[REG:[0-9]+]]+lt, un, gt +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, 4*cr[[REG]]+lt ; CHECK: blr } @@ -72,7 +73,7 @@ entry: ret i32 %conv ; CHECK-LABEL: equal_qp ; CHECK: xscmpuqp -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, 2 +; CHECK: isel r{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}}, eq ; CHECK: blr } @@ -87,7 +88,7 @@ entry: ret i32 %lnot.ext ; CHECK-LABEL: not_greater_qp ; CHECK: xscmpuqp -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, 1 +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, gt ; CHECK: blr } @@ -102,7 +103,7 @@ entry: ret i32 %lnot.ext ; CHECK-LABEL: not_less_qp ; CHECK: xscmpuqp -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, 0 +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, lt ; CHECK: blr } @@ -117,8 +118,8 @@ entry: ret i32 %lnot.ext ; CHECK-LABEL: not_greater_eq_qp ; CHECK: xscmpuqp -; CHECK: crnor [[REG:[0-9]+]], 0, {{[0-9]+}} -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, [[REG]] +; CHECK: crnor 4*cr[[REG:[0-9]+]]+lt, lt, un +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, 4*cr[[REG]]+lt ; CHECK: blr } @@ -133,8 +134,8 @@ entry: ret i32 %lnot.ext ; CHECK-LABEL: not_less_eq_qp ; CHECK: xscmpuqp -; CHECK: crnor [[REG:[0-9]+]], 1, {{[0-9]+}} -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, [[REG]] +; CHECK: crnor 4*cr[[REG:[0-9]+]]+lt, gt, un +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, 4*cr[[REG]]+lt ; CHECK: blr } @@ -148,7 +149,7 @@ entry: ret i32 %conv ; CHECK-LABEL: not_equal_qp ; CHECK: xscmpuqp -; CHECK: isel {{[0-9]+}}, {{[0-9]+}}, {{[0-9]+}}, 2 +; CHECK: isel r{{[0-9]+}}, 0, r{{[0-9]+}}, eq ; CHECK: blr } @@ -161,8 +162,8 @@ entry: %cond = select i1 %cmp, fp128 %0, fp128 %1 ret fp128 %cond ; CHECK-LABEL: greater_sel_qp -; CHECK: xscmpuqp [[REG:[0-9]+]] -; CHECK: bgtlr [[REG]] +; CHECK: xscmpuqp cr[[REG:[0-9]+]] +; CHECK: bgtlr cr[[REG]] ; CHECK: blr } @@ -175,8 +176,8 @@ entry: %cond = select i1 %cmp, fp128 %0, fp128 %1 ret fp128 %cond ; CHECK-LABEL: less_sel_qp -; CHECK: xscmpuqp [[REG:[0-9]+]] -; CHECK: bltlr [[REG]] +; CHECK: xscmpuqp cr[[REG:[0-9]+]] +; CHECK: bltlr cr[[REG]] ; CHECK: blr } @@ -190,8 +191,8 @@ entry: ret fp128 %cond ; CHECK-LABEL: greater_eq_sel_qp ; CHECK: xscmpuqp -; CHECK: crnor [[REG:[0-9]+]], {{[0-9]+}}, 0 -; CHECK: bclr {{[0-9]+}}, [[REG]] +; CHECK: crnor 4*cr[[REG:[0-9]+]]+lt, un, lt +; CHECK: bclr {{[0-9]+}}, 4*cr[[REG]]+lt, 0 ; CHECK: blr } @@ -205,8 +206,8 @@ entry: ret fp128 %cond ; CHECK-LABEL: less_eq_sel_qp ; CHECK: xscmpuqp -; CHECK: crnor [[REG:[0-9]+]], {{[0-9]+}}, 1 -; CHECK: bclr {{[0-9]+}}, [[REG]] +; CHECK: crnor 4*cr[[REG:[0-9]+]]+lt, un, gt +; CHECK: bclr {{[0-9]+}}, 4*cr[[REG]]+lt, 0 ; CHECK: blr } @@ -219,7 +220,7 @@ entry: %cond = select i1 %cmp, fp128 %0, fp128 %1 ret fp128 %cond ; CHECK-LABEL: equal_sel_qp -; CHECK: xscmpuqp [[REG:[0-9]+]] -; CHECK: beqlr [[REG]] +; CHECK: xscmpuqp cr[[REG:[0-9]+]] +; CHECK: beqlr cr[[REG]] ; CHECK: blr } diff --git a/test/CodeGen/PowerPC/f128-conv.ll b/test/CodeGen/PowerPC/f128-conv.ll index 42949685e3c..4ac0a009974 100644 --- a/test/CodeGen/PowerPC/f128-conv.ll +++ b/test/CodeGen/PowerPC/f128-conv.ll @@ -1,6 +1,6 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ ; RUN: -enable-ppc-quad-precision -ppc-vsr-nums-as-vr \ -; RUN: -verify-machineinstrs < %s | FileCheck %s +; RUN: -verify-machineinstrs -ppc-asm-full-reg-names < %s | FileCheck %s @mem = global [5 x i64] [i64 56, i64 63, i64 3, i64 5, i64 6], align 8 @umem = global [5 x i64] [i64 560, i64 100, i64 34, i64 2, i64 5], align 8 @@ -17,9 +17,9 @@ entry: ret void ; CHECK-LABEL: sdwConv2qp -; CHECK: mtvsrd [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: mtvsrd v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -33,11 +33,11 @@ entry: ret void ; CHECK-LABEL: sdwConv2qp_02 -; CHECK: addis [[REG:[0-9]+]], 2, .LC0@toc@ha -; CHECK: ld [[REG]], .LC0@toc@l([[REG]]) -; CHECK: lxsd [[REG0:[0-9]+]], 16([[REG]]) -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG0]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: addis r[[REG:[0-9]+]], r2, .LC0@toc@ha +; CHECK: ld r[[REG]], .LC0@toc@l(r[[REG]]) +; CHECK: lxsd v[[REG0:[0-9]+]], 16(r[[REG]]) +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG0]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -51,9 +51,9 @@ entry: ; CHECK-LABEL: sdwConv2qp_03 ; CHECK-NOT: ld -; CHECK: lxsd [[REG0:[0-9]+]], 0(4) -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG0]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsd v[[REG0:[0-9]+]], 0(r4) +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG0]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -65,9 +65,9 @@ entry: ret void ; CHECK-LABEL: udwConv2qp -; CHECK: mtvsrd [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: mtvsrd v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -81,11 +81,11 @@ entry: ret void ; CHECK-LABEL: udwConv2qp_02 -; CHECK: addis [[REG:[0-9]+]], 2, .LC1@toc@ha -; CHECK: ld [[REG]], .LC1@toc@l([[REG]]) -; CHECK: lxsd [[REG0:[0-9]+]], 32([[REG]]) -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG0]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: addis r[[REG:[0-9]+]], r2, .LC1@toc@ha +; CHECK: ld r[[REG]], .LC1@toc@l(r[[REG]]) +; CHECK: lxsd v[[REG0:[0-9]+]], 32(r[[REG]]) +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG0]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -99,9 +99,9 @@ entry: ; CHECK-LABEL: udwConv2qp_03 ; CHECK-NOT: ld -; CHECK: lxsd [[REG:[0-9]+]], 0(4) -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsd v[[REG:[0-9]+]], 0(r4) +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -117,9 +117,9 @@ entry: ret fp128* %sink ; CHECK-LABEL: sdwConv2qp_testXForm -; CHECK: lxsdx [[REG:[0-9]+]], -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsdx v[[REG:[0-9]+]], +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -135,9 +135,9 @@ entry: ret fp128* %sink ; CHECK-LABEL: udwConv2qp_testXForm -; CHECK: lxsdx [[REG:[0-9]+]], -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsdx v[[REG:[0-9]+]], +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -150,9 +150,9 @@ entry: ; CHECK-LABEL: swConv2qp ; CHECK-NOT: lwz -; CHECK: mtvsrwa [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: mtvsrwa v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -166,9 +166,9 @@ entry: ; CHECK-LABEL: swConv2qp_02 ; CHECK-NOT: lwz -; CHECK: lxsiwax [[REG:[0-9]+]], 0, 4 -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsiwax v[[REG:[0-9]+]], 0, r4 +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -182,12 +182,12 @@ entry: ret void ; CHECK-LABEL: swConv2qp_03 -; CHECK: addis [[REG:[0-9]+]], 2, .LC2@toc@ha -; CHECK: ld [[REG]], .LC2@toc@l([[REG]]) -; CHECK: addi [[REG2:[0-9]+]], [[REG]], 12 -; CHECK: lxsiwax [[REG0:[0-9]+]], 0, [[REG2]] -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG0]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: addis r[[REG:[0-9]+]], r2, .LC2@toc@ha +; CHECK: ld r[[REG]], .LC2@toc@l(r[[REG]]) +; CHECK: addi r[[REG2:[0-9]+]], r[[REG]], 12 +; CHECK: lxsiwax v[[REG0:[0-9]+]], 0, r[[REG2]] +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG0]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -200,9 +200,9 @@ entry: ; CHECK-LABEL: uwConv2qp ; CHECK-NOT: lwz -; CHECK: mtvsrwz [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: mtvsrwz v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -216,9 +216,9 @@ entry: ; CHECK-LABEL: uwConv2qp_02 ; CHECK-NOT: lwz -; CHECK: lxsiwzx [[REG:[0-9]+]], 0, 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsiwzx v[[REG:[0-9]+]], 0, r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -232,12 +232,12 @@ entry: ret void ; CHECK-LABEL: uwConv2qp_03 -; CHECK: addis [[REG:[0-9]+]], 2, .LC3@toc@ha -; CHECK-NEXT: ld [[REG]], .LC3@toc@l([[REG]]) -; CHECK-NEXT: addi [[REG2:[0-9]+]], [[REG]], 12 -; CHECK-NEXT: lxsiwzx [[REG1:[0-9]+]], 0, [[REG2]] -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG1]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: addis r[[REG:[0-9]+]], r2, .LC3@toc@ha +; CHECK-NEXT: ld r[[REG]], .LC3@toc@l(r[[REG]]) +; CHECK-NEXT: addi r[[REG2:[0-9]+]], r[[REG]], 12 +; CHECK-NEXT: lxsiwzx v[[REG1:[0-9]+]], 0, r[[REG2]] +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG1]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -252,11 +252,11 @@ entry: ret void ; CHECK-LABEL: uwConv2qp_04 -; CHECK: lwz [[REG:[0-9]+]], 0(5) -; CHECK-NEXT: add [[REG1:[0-9]+]], [[REG]], [[REG1]] -; CHECK-NEXT: mtvsrwz [[REG0:[0-9]+]], [[REG1]] -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG0]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lwz r[[REG:[0-9]+]], 0(r5) +; CHECK-NEXT: add r[[REG1:[0-9]+]], r[[REG]], r[[REG1]] +; CHECK-NEXT: mtvsrwz v[[REG0:[0-9]+]], r[[REG1]] +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG0]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -269,9 +269,9 @@ entry: ; CHECK-LABEL: uhwConv2qp -; CHECK: mtvsrwz [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: mtvsrwz v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -284,9 +284,9 @@ entry: ret void ; CHECK-LABEL: uhwConv2qp_02 -; CHECK: lxsihzx [[REG:[0-9]+]], 0, 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsihzx v[[REG:[0-9]+]], 0, r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -300,12 +300,12 @@ entry: ret void ; CHECK-LABEL: uhwConv2qp_03 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC4@toc@ha -; CHECK: ld [[REG0]], .LC4@toc@l([[REG0]]) -; CHECK: addi [[REG0]], [[REG0]], 6 -; CHECK: lxsihzx [[REG:[0-9]+]], 0, [[REG0]] -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC4@toc@ha +; CHECK: ld r[[REG0]], .LC4@toc@l(r[[REG0]]) +; CHECK: addi r[[REG0]], r[[REG0]], 6 +; CHECK: lxsihzx v[[REG:[0-9]+]], 0, r[[REG0]] +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -322,11 +322,11 @@ entry: ret void ; CHECK-LABEL: uhwConv2qp_04 -; CHECK: lhz [[REG0:[0-9]+]], 0(5) -; CHECK: add 4, [[REG0]], 4 -; CHECK: mtvsrwa [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lhz r[[REG0:[0-9]+]], 0(r5) +; CHECK: add r4, r[[REG0]], r4 +; CHECK: mtvsrwa v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -338,9 +338,9 @@ entry: ret void ; CHECK-LABEL: ubConv2qp -; CHECK: mtvsrwz [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: mtvsrwz v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -353,9 +353,9 @@ entry: ret void ; CHECK-LABEL: ubConv2qp_02 -; CHECK: lxsibzx [[REG:[0-9]+]], 0, 4 -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lxsibzx v[[REG:[0-9]+]], 0, r4 +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -369,12 +369,12 @@ entry: ret void ; CHECK-LABEL: ubConv2qp_03 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC5@toc@ha -; CHECK: ld [[REG0]], .LC5@toc@l([[REG0]]) -; CHECK: addi [[REG0]], [[REG0]], 2 -; CHECK: lxsibzx [[REG:[0-9]+]], 0, [[REG0]] -; CHECK-NEXT: xscvudqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC5@toc@ha +; CHECK: ld r[[REG0]], .LC5@toc@l(r[[REG0]]) +; CHECK: addi r[[REG0]], r[[REG0]], 2 +; CHECK: lxsibzx v[[REG:[0-9]+]], 0, r[[REG0]] +; CHECK-NEXT: xscvudqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -391,11 +391,11 @@ entry: ret void ; CHECK-LABEL: ubConv2qp_04 -; CHECK: lbz [[REG0:[0-9]+]], 0(5) -; CHECK: add 4, [[REG0]], 4 -; CHECK: mtvsrwa [[REG:[0-9]+]], 4 -; CHECK-NEXT: xscvsdqp [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxv [[CONV]], 0(3) +; CHECK: lbz r[[REG0:[0-9]+]], 0(r5) +; CHECK: add r4, r[[REG0]], r4 +; CHECK: mtvsrwa v[[REG:[0-9]+]], r4 +; CHECK-NEXT: xscvsdqp v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxv v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -412,9 +412,9 @@ entry: define double @qpConv2dp(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2dp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: xscvqpdp 2, 2 -; CHECK-NEXT: xxlor 1, 2, 2 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: xscvqpdp v2, v2 +; CHECK-NEXT: xxlor f1, v2, v2 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -426,11 +426,11 @@ entry: define void @qpConv2dp_02(double* nocapture %res) { ; CHECK-LABEL: qpConv2dp_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC6@toc@ha -; CHECK-NEXT: ld 4, .LC6@toc@l(4) -; CHECK-NEXT: lxvx 2, 0, 4 -; CHECK-NEXT: xscvqpdp 2, 2 -; CHECK-NEXT: stxsd 2, 0(3) +; CHECK-NEXT: addis r4, r2, .LC6@toc@ha +; CHECK-NEXT: ld r4, .LC6@toc@l(r4) +; CHECK-NEXT: lxvx v2, 0, r4 +; CHECK-NEXT: xscvqpdp v2, v2 +; CHECK-NEXT: stxsd v2, 0(r3) ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* @f128global, align 16 @@ -443,12 +443,12 @@ entry: define void @qpConv2dp_03(double* nocapture %res, i32 signext %idx) { ; CHECK-LABEL: qpConv2dp_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 5, 2, .LC7@toc@ha -; CHECK-NEXT: sldi 4, 4, 3 -; CHECK-NEXT: ld 5, .LC7@toc@l(5) -; CHECK-NEXT: lxvx 2, 0, 5 -; CHECK-NEXT: xscvqpdp 2, 2 -; CHECK-NEXT: stxsdx 2, 3, 4 +; CHECK-NEXT: addis r5, r2, .LC7@toc@ha +; CHECK-NEXT: sldi r4, r4, 3 +; CHECK-NEXT: ld r5, .LC7@toc@l(r5) +; CHECK-NEXT: lxvx v2, 0, r5 +; CHECK-NEXT: xscvqpdp v2, v2 +; CHECK-NEXT: stxsdx v2, r3, r4 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds ([4 x fp128], [4 x fp128]* @f128Array, i64 0, i64 0), align 16 @@ -463,11 +463,11 @@ entry: define void @qpConv2dp_04(fp128* nocapture readonly %a, fp128* nocapture readonly %b, double* nocapture %res) { ; CHECK-LABEL: qpConv2dp_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: lxv 3, 0(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpdp 2, 2 -; CHECK-NEXT: stxsd 2, 0(5) +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: lxv v3, 0(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpdp v2, v2 +; CHECK-NEXT: stxsd v2, 0(r5) ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -484,9 +484,9 @@ entry: define float @qpConv2sp(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2sp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: xscvqpdpo 2, 2 -; CHECK-NEXT: xsrsp 1, 2 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: xscvqpdpo v2, v2 +; CHECK-NEXT: xsrsp f1, v2 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -498,12 +498,12 @@ entry: define void @qpConv2sp_02(float* nocapture %res) { ; CHECK-LABEL: qpConv2sp_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC6@toc@ha -; CHECK-NEXT: ld 4, .LC6@toc@l(4) -; CHECK-NEXT: lxvx 2, 0, 4 -; CHECK-NEXT: xscvqpdpo 2, 2 -; CHECK-NEXT: xsrsp 0, 2 -; CHECK-NEXT: stfs 0, 0(3) +; CHECK-NEXT: addis r4, r2, .LC6@toc@ha +; CHECK-NEXT: ld r4, .LC6@toc@l(r4) +; CHECK-NEXT: lxvx v2, 0, r4 +; CHECK-NEXT: xscvqpdpo v2, v2 +; CHECK-NEXT: xsrsp f0, v2 +; CHECK-NEXT: stfs f0, 0(r3) ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* @f128global, align 16 @@ -516,13 +516,13 @@ entry: define void @qpConv2sp_03(float* nocapture %res, i32 signext %idx) { ; CHECK-LABEL: qpConv2sp_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 5, 2, .LC7@toc@ha -; CHECK-NEXT: sldi 4, 4, 2 -; CHECK-NEXT: ld 5, .LC7@toc@l(5) -; CHECK-NEXT: lxv 2, 48(5) -; CHECK-NEXT: xscvqpdpo 2, 2 -; CHECK-NEXT: xsrsp 0, 2 -; CHECK-NEXT: stfsx 0, 3, 4 +; CHECK-NEXT: addis r5, r2, .LC7@toc@ha +; CHECK-NEXT: sldi r4, r4, 2 +; CHECK-NEXT: ld r5, .LC7@toc@l(r5) +; CHECK-NEXT: lxv v2, 48(r5) +; CHECK-NEXT: xscvqpdpo v2, v2 +; CHECK-NEXT: xsrsp f0, v2 +; CHECK-NEXT: stfsx f0, r3, r4 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds ([4 x fp128], [4 x fp128]* @f128Array, i64 0, i64 3), align 16 @@ -537,12 +537,12 @@ entry: define void @qpConv2sp_04(fp128* nocapture readonly %a, fp128* nocapture readonly %b, float* nocapture %res) { ; CHECK-LABEL: qpConv2sp_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: lxv 3, 0(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpdpo 2, 2 -; CHECK-NEXT: xsrsp 0, 2 -; CHECK-NEXT: stfs 0, 0(5) +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: lxv v3, 0(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpdpo v2, v2 +; CHECK-NEXT: xsrsp f0, v2 +; CHECK-NEXT: stfs f0, 0(r5) ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -559,8 +559,8 @@ entry: define fp128 @dpConv2qp(double %a) { ; CHECK-LABEL: dpConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxlor 2, 1, 1 -; CHECK-NEXT: xscvdpqp 2, 2 +; CHECK-NEXT: xxlor v2, f1, f1 +; CHECK-NEXT: xscvdpqp v2, v2 ; CHECK-NEXT: blr entry: %conv = fpext double %a to fp128 @@ -571,11 +571,11 @@ entry: define void @dpConv2qp_02(double* nocapture readonly %a) { ; CHECK-LABEL: dpConv2qp_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxsd 2, 0(3) -; CHECK-NEXT: addis 3, 2, .LC8@toc@ha -; CHECK-NEXT: ld 3, .LC8@toc@l(3) -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxvx 2, 0, 3 +; CHECK-NEXT: lxsd v2, 0(r3) +; CHECK-NEXT: addis r3, r2, .LC8@toc@ha +; CHECK-NEXT: ld r3, .LC8@toc@l(r3) +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxvx v2, 0, r3 ; CHECK-NEXT: blr entry: %0 = load double, double* %a, align 8 @@ -588,12 +588,12 @@ entry: define void @dpConv2qp_02b(double* nocapture readonly %a, i32 signext %idx) { ; CHECK-LABEL: dpConv2qp_02b: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: sldi 4, 4, 3 -; CHECK-NEXT: lxsdx 2, 3, 4 -; CHECK-NEXT: addis 3, 2, .LC8@toc@ha -; CHECK-NEXT: ld 3, .LC8@toc@l(3) -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxvx 2, 0, 3 +; CHECK-NEXT: sldi r4, r4, 3 +; CHECK-NEXT: lxsdx v2, r3, r4 +; CHECK-NEXT: addis r3, r2, .LC8@toc@ha +; CHECK-NEXT: ld r3, .LC8@toc@l(r3) +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxvx v2, 0, r3 ; CHECK-NEXT: blr entry: %idxprom = sext i32 %idx to i64 @@ -608,10 +608,10 @@ entry: define void @dpConv2qp_03(fp128* nocapture %res, i32 signext %idx, double %a) { ; CHECK-LABEL: dpConv2qp_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxlor 2, 1, 1 -; CHECK-NEXT: sldi 4, 4, 4 -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxvx 2, 3, 4 +; CHECK-NEXT: xxlor v2, f1, f1 +; CHECK-NEXT: sldi r4, r4, 4 +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxvx v2, r3, r4 ; CHECK-NEXT: blr entry: %conv = fpext double %a to fp128 @@ -625,9 +625,9 @@ entry: define void @dpConv2qp_04(double %a, fp128* nocapture %res) { ; CHECK-LABEL: dpConv2qp_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxlor 2, 1, 1 -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xxlor v2, f1, f1 +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fpext double %a to fp128 @@ -639,8 +639,8 @@ entry: define fp128 @spConv2qp(float %a) { ; CHECK-LABEL: spConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxlor 2, 1, 1 -; CHECK-NEXT: xscvdpqp 2, 2 +; CHECK-NEXT: xxlor v2, f1, f1 +; CHECK-NEXT: xscvdpqp v2, v2 ; CHECK-NEXT: blr entry: %conv = fpext float %a to fp128 @@ -651,11 +651,11 @@ entry: define void @spConv2qp_02(float* nocapture readonly %a) { ; CHECK-LABEL: spConv2qp_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxssp 2, 0(3) -; CHECK-NEXT: addis 3, 2, .LC8@toc@ha -; CHECK-NEXT: ld 3, .LC8@toc@l(3) -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxvx 2, 0, 3 +; CHECK-NEXT: lxssp v2, 0(r3) +; CHECK-NEXT: addis r3, r2, .LC8@toc@ha +; CHECK-NEXT: ld r3, .LC8@toc@l(r3) +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxvx v2, 0, r3 ; CHECK-NEXT: blr entry: %0 = load float, float* %a, align 4 @@ -668,12 +668,12 @@ entry: define void @spConv2qp_02b(float* nocapture readonly %a, i32 signext %idx) { ; CHECK-LABEL: spConv2qp_02b: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: sldi 4, 4, 2 -; CHECK-NEXT: lxsspx 2, 3, 4 -; CHECK-NEXT: addis 3, 2, .LC8@toc@ha -; CHECK-NEXT: ld 3, .LC8@toc@l(3) -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxvx 2, 0, 3 +; CHECK-NEXT: sldi r4, r4, 2 +; CHECK-NEXT: lxsspx v2, r3, r4 +; CHECK-NEXT: addis r3, r2, .LC8@toc@ha +; CHECK-NEXT: ld r3, .LC8@toc@l(r3) +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxvx v2, 0, r3 ; CHECK-NEXT: blr entry: %idxprom = sext i32 %idx to i64 @@ -688,10 +688,10 @@ entry: define void @spConv2qp_03(fp128* nocapture %res, i32 signext %idx, float %a) { ; CHECK-LABEL: spConv2qp_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxlor 2, 1, 1 -; CHECK-NEXT: sldi 4, 4, 4 -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxvx 2, 3, 4 +; CHECK-NEXT: xxlor v2, f1, f1 +; CHECK-NEXT: sldi r4, r4, 4 +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxvx v2, r3, r4 ; CHECK-NEXT: blr entry: %conv = fpext float %a to fp128 @@ -705,9 +705,9 @@ entry: define void @spConv2qp_04(float %a, fp128* nocapture %res) { ; CHECK-LABEL: spConv2qp_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxlor 2, 1, 1 -; CHECK-NEXT: xscvdpqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xxlor v2, f1, f1 +; CHECK-NEXT: xscvdpqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fpext float %a to fp128 @@ -721,10 +721,10 @@ entry: define void @cvdp2sw2qp(double %val, fp128* nocapture %res) { ; CHECK-LABEL: cvdp2sw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpsxws 2, 1 -; CHECK-NEXT: vextsw2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpsxws v2, f1 +; CHECK-NEXT: vextsw2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptosi double %val to i32 @@ -737,9 +737,9 @@ entry: define void @cvdp2sdw2qp(double %val, fp128* nocapture %res) { ; CHECK-LABEL: cvdp2sdw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpsxds 2, 1 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpsxds v2, f1 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptosi double %val to i64 @@ -752,10 +752,10 @@ entry: define void @cvsp2sw2qp(float %val, fp128* nocapture %res) { ; CHECK-LABEL: cvsp2sw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpsxws 2, 1 -; CHECK-NEXT: vextsw2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpsxws v2, f1 +; CHECK-NEXT: vextsw2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptosi float %val to i32 @@ -768,9 +768,9 @@ entry: define void @cvsp2sdw2qp(float %val, fp128* nocapture %res) { ; CHECK-LABEL: cvsp2sdw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpsxds 2, 1 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpsxds v2, f1 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptosi float %val to i64 @@ -783,10 +783,10 @@ entry: define void @cvdp2uw2qp(double %val, fp128* nocapture %res) { ; CHECK-LABEL: cvdp2uw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpuxws 0, 1 -; CHECK-NEXT: xxextractuw 2, 0, 8 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpuxws f0, f1 +; CHECK-NEXT: xxextractuw v2, vs0, 8 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptoui double %val to i32 @@ -799,9 +799,9 @@ entry: define void @cvdp2udw2qp(double %val, fp128* nocapture %res) { ; CHECK-LABEL: cvdp2udw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpuxds 2, 1 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpuxds v2, f1 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptoui double %val to i64 @@ -814,10 +814,10 @@ entry: define void @cvsp2uw2qp(float %val, fp128* nocapture %res) { ; CHECK-LABEL: cvsp2uw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpuxws 0, 1 -; CHECK-NEXT: xxextractuw 2, 0, 8 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpuxws f0, f1 +; CHECK-NEXT: xxextractuw v2, vs0, 8 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptoui float %val to i32 @@ -830,9 +830,9 @@ entry: define void @cvsp2udw2qp(float %val, fp128* nocapture %res) { ; CHECK-LABEL: cvsp2udw2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvdpuxds 2, 1 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 2, 0(4) +; CHECK-NEXT: xscvdpuxds v2, f1 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r4) ; CHECK-NEXT: blr entry: %conv = fptoui float %val to i64 diff --git a/test/CodeGen/PowerPC/f128-fma.ll b/test/CodeGen/PowerPC/f128-fma.ll index 891b926c37c..9c3c062e4cc 100644 --- a/test/CodeGen/PowerPC/f128-fma.ll +++ b/test/CodeGen/PowerPC/f128-fma.ll @@ -1,5 +1,6 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ -; RUN: -enable-ppc-quad-precision -ppc-vsr-nums-as-vr < %s | FileCheck %s +; RUN: -enable-ppc-quad-precision -ppc-vsr-nums-as-vr \ +; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s define void @qpFmadd(fp128* nocapture readonly %a, fp128* nocapture %b, fp128* nocapture readonly %c, fp128* nocapture %res) { @@ -12,11 +13,11 @@ entry: ret void ; CHECK-LABEL: qpFmadd ; CHECK-NOT: bl fmal -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsmaddqp [[REG5]], [[REG3]], [[REG4]] -; CHECK-NEXT: stxv [[REG5]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsmaddqp v[[REG5]], v[[REG3]], v[[REG4]] +; CHECK-NEXT: stxv v[[REG5]], 0(r6) ; CHECK-NEXT: blr } declare fp128 @llvm.fmuladd.f128(fp128, fp128, fp128) @@ -35,11 +36,11 @@ entry: ret void ; CHECK-LABEL: qpFmadd_02 ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsmaddqp [[REG3]], [[REG4]], [[REG5]] -; CHECK-NEXT: stxv [[REG3]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsmaddqp v[[REG3]], v[[REG4]], v[[REG5]] +; CHECK-NEXT: stxv v[[REG3]], 0(r6) ; CHECK-NEXT: blr } @@ -57,11 +58,11 @@ entry: ret void ; CHECK-LABEL: qpFmadd_03 ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsmaddqp [[REG5]], [[REG3]], [[REG4]] -; CHECK-NEXT: stxv [[REG5]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsmaddqp v[[REG5]], v[[REG3]], v[[REG4]] +; CHECK-NEXT: stxv v[[REG5]], 0(r6) ; CHECK-NEXT: blr } @@ -80,11 +81,11 @@ entry: ret void ; CHECK-LABEL: qpFnmadd ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsnmaddqp [[REG3]], [[REG4]], [[REG5]] -; CHECK-NEXT: stxv [[REG3]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsnmaddqp v[[REG3]], v[[REG4]], v[[REG5]] +; CHECK-NEXT: stxv v[[REG3]], 0(r6) ; CHECK-NEXT: blr } @@ -103,11 +104,11 @@ entry: ret void ; CHECK-LABEL: qpFnmadd_02 ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsnmaddqp [[REG5]], [[REG3]], [[REG4]] -; CHECK-NEXT: stxv [[REG5]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsnmaddqp v[[REG5]], v[[REG3]], v[[REG4]] +; CHECK-NEXT: stxv v[[REG5]], 0(r6) ; CHECK-NEXT: blr } @@ -125,11 +126,11 @@ entry: ret void ; CHECK-LABEL: qpFmsub ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsnmsubqp [[REG3]], [[REG5]], [[REG4]] -; CHECK-NEXT: stxv [[REG3]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsnmsubqp v[[REG3]], v[[REG5]], v[[REG4]] +; CHECK-NEXT: stxv v[[REG3]], 0(r6) ; CHECK-NEXT: blr } @@ -147,11 +148,11 @@ entry: ret void ; CHECK-LABEL: qpFmsub_02 ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsmsubqp [[REG5]], [[REG3]], [[REG4]] -; CHECK-NEXT: stxv [[REG5]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsmsubqp v[[REG5]], v[[REG3]], v[[REG4]] +; CHECK-NEXT: stxv v[[REG5]], 0(r6) ; CHECK-NEXT: blr } @@ -170,12 +171,12 @@ entry: ret void ; CHECK-LABEL: qpFnmsub ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsnegqp [[REG4]], [[REG4]] -; CHECK: xsnmaddqp [[REG3]], [[REG4]], [[REG5]] -; CHECK-NEXT: stxv [[REG3]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsnegqp v[[REG4]], v[[REG4]] +; CHECK: xsnmaddqp v[[REG3]], v[[REG4]], v[[REG5]] +; CHECK-NEXT: stxv v[[REG3]], 0(r6) ; CHECK-NEXT: blr } @@ -194,10 +195,10 @@ entry: ret void ; CHECK-LABEL: qpFnmsub_02 ; CHECK-NOT: bl __multf3 -; CHECK-DAG: lxv [[REG3:[0-9]+]], 0(3) -; CHECK-DAG: lxv [[REG4:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG5:[0-9]+]], 0(5) -; CHECK: xsnmsubqp [[REG5]], [[REG3]], [[REG4]] -; CHECK-NEXT: stxv [[REG5]], 0(6) +; CHECK-DAG: lxv v[[REG3:[0-9]+]], 0(r3) +; CHECK-DAG: lxv v[[REG4:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG5:[0-9]+]], 0(r5) +; CHECK: xsnmsubqp v[[REG5]], v[[REG3]], v[[REG4]] +; CHECK-NEXT: stxv v[[REG5]], 0(r6) ; CHECK-NEXT: blr } diff --git a/test/CodeGen/PowerPC/f128-passByValue.ll b/test/CodeGen/PowerPC/f128-passByValue.ll index ed5edc1acd8..ad1de5112cc 100644 --- a/test/CodeGen/PowerPC/f128-passByValue.ll +++ b/test/CodeGen/PowerPC/f128-passByValue.ll @@ -1,14 +1,14 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ ; RUN: -enable-ppc-quad-precision -ppc-vsr-nums-as-vr \ -; RUN: -verify-machineinstrs < %s | FileCheck %s +; RUN: -verify-machineinstrs -ppc-asm-full-reg-names < %s | FileCheck %s ; Function Attrs: norecurse nounwind readnone define fp128 @loadConstant() { ; CHECK-LABEL: loadConstant: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis [[REG0:[0-9]+]], 2, .LCPI0_0@toc@ha -; CHECK-NEXT: addi [[REG0]], [[REG0]], .LCPI0_0@toc@l -; CHECK-NEXT: lxvx 2, 0, [[REG0]] +; CHECK-NEXT: addis r[[REG0:[0-9]+]], r2, .LCPI0_0@toc@ha +; CHECK-NEXT: addi r[[REG0]], r[[REG0]], .LCPI0_0@toc@l +; CHECK-NEXT: lxvx v2, 0, r[[REG0]] ; CHECK-NEXT: blr entry: ret fp128 0xL00000000000000004001400000000000 @@ -18,11 +18,11 @@ define fp128 @loadConstant() { define fp128 @loadConstant2(fp128 %a, fp128 %b) { ; CHECK-LABEL: loadConstant2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: addis [[REG0:[0-9]+]], 2, .LCPI1_0@toc@ha -; CHECK-NEXT: addi [[REG0]], [[REG0]], .LCPI1_0@toc@l -; CHECK-NEXT: lxvx [[REG0]], 0, [[REG0]] -; CHECK-NEXT: xsaddqp 2, 2, [[REG0]] +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: addis r[[REG0:[0-9]+]], r2, .LCPI1_0@toc@ha +; CHECK-NEXT: addi r[[REG0]], r[[REG0]], .LCPI1_0@toc@l +; CHECK-NEXT: lxvx v[[REG1:[0-9]+]], 0, r[[REG0]] +; CHECK-NEXT: xsaddqp v2, v2, v[[REG1]] ; CHECK-NEXT: blr entry: %add = fadd fp128 %a, %b @@ -35,9 +35,9 @@ define fp128 @loadConstant2(fp128 %a, fp128 %b) { define signext i32 @fp128Param(fp128 %a) { ; CHECK-LABEL: fp128Param: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: extsw 3, 3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: extsw r3, r3 ; CHECK-NEXT: blr entry: %conv = fptosi fp128 %a to i32 @@ -49,7 +49,7 @@ entry: define fp128 @fp128Return(fp128 %a, fp128 %b) { ; CHECK-LABEL: fp128Return: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xsaddqp 2, 2, 3 +; CHECK-NEXT: xsaddqp v2, v2, v3 ; CHECK-NEXT: blr entry: %add = fadd fp128 %a, %b @@ -61,11 +61,11 @@ entry: define fp128 @fp128Array(fp128* nocapture readonly %farray, ; CHECK-LABEL: fp128Array: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: sldi 4, 4, 4 -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: add 4, 3, 4 -; CHECK-NEXT: lxv 3, -16(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 +; CHECK-NEXT: sldi r4, r4, 4 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: add r4, r3, r4 +; CHECK-NEXT: lxv v3, -16(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 ; CHECK-NEXT: blr i32 signext %loopcnt, fp128* nocapture readnone %sum) { entry: @@ -84,19 +84,19 @@ entry: define fp128 @maxVecParam(fp128 %p1, fp128 %p2, fp128 %p3, fp128 %p4, fp128 %p5, ; CHECK-LABEL: maxVecParam: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: lxv [[REG0:[0-9]+]], 224(1) -; CHECK-NEXT: xsaddqp 2, 2, 4 -; CHECK-NEXT: xsaddqp 2, 2, 5 -; CHECK-NEXT: xsaddqp 2, 2, 6 -; CHECK-NEXT: xsaddqp 2, 2, 7 -; CHECK-NEXT: xsaddqp 2, 2, 8 -; CHECK-NEXT: xsaddqp 2, 2, 9 -; CHECK-NEXT: xsaddqp 2, 2, 10 -; CHECK-NEXT: xsaddqp 2, 2, 11 -; CHECK-NEXT: xsaddqp 2, 2, 12 -; CHECK-NEXT: xsaddqp 2, 2, 13 -; CHECK-NEXT: xssubqp 2, 2, [[REG0]] +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: lxv v[[REG0:[0-9]+]], 224(r1) +; CHECK-NEXT: xsaddqp v2, v2, v4 +; CHECK-NEXT: xsaddqp v2, v2, v5 +; CHECK-NEXT: xsaddqp v2, v2, v6 +; CHECK-NEXT: xsaddqp v2, v2, v7 +; CHECK-NEXT: xsaddqp v2, v2, v8 +; CHECK-NEXT: xsaddqp v2, v2, v9 +; CHECK-NEXT: xsaddqp v2, v2, v10 +; CHECK-NEXT: xsaddqp v2, v2, v11 +; CHECK-NEXT: xsaddqp v2, v2, v12 +; CHECK-NEXT: xsaddqp v2, v2, v13 +; CHECK-NEXT: xssubqp v2, v2, v[[REG0]] ; CHECK-NEXT: blr fp128 %p6, fp128 %p7, fp128 %p8, fp128 %p9, fp128 %p10, fp128 %p11, fp128 %p12, fp128 %p13) { @@ -121,10 +121,10 @@ entry: define fp128 @mixParam_01(fp128 %a, i32 signext %i, fp128 %b) { ; CHECK-LABEL: mixParam_01: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrwa 4, 5 -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvsdqp [[REG0:[0-9]+]], 4 -; CHECK-NEXT: xsaddqp 2, 2, [[REG0]] +; CHECK-NEXT: mtvsrwa v4, r5 +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvsdqp v[[REG0:[0-9]+]], v4 +; CHECK-NEXT: xsaddqp v2, v2, v[[REG0]] ; CHECK-NEXT: blr entry: %add = fadd fp128 %a, %b @@ -136,10 +136,10 @@ entry: define fastcc fp128 @mixParam_01f(fp128 %a, i32 signext %i, fp128 %b) { ; CHECK-LABEL: mixParam_01f: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrwa [[REG0:[0-9]+]], 3 -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvsdqp [[REG1:[0-9]+]], [[REG0]] -; CHECK-NEXT: xsaddqp 2, 2, [[REG1]] +; CHECK-NEXT: mtvsrwa v[[REG0:[0-9]+]], r3 +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvsdqp v[[REG1:[0-9]+]], v[[REG0]] +; CHECK-NEXT: xsaddqp v2, v2, v[[REG1]] ; CHECK-NEXT: blr entry: %add = fadd fp128 %a, %b @@ -152,17 +152,17 @@ entry: define fp128 @mixParam_02(fp128 %p1, double %p2, i64* nocapture %p3, ; CHECK-LABEL: mixParam_02: ; CHECK: # %bb.0: # %entry -; CHECK-DAG: lwz 3, 96(1) -; CHECK: add 4, 7, 9 -; CHECK-NEXT: xxlor [[REG0:[0-9]+]], 1, 1 -; CHECK-DAG: add 4, 4, 10 -; CHECK: xscvdpqp [[REG0]], [[REG0]] -; CHECK-NEXT: add 3, 4, 3 -; CHECK-NEXT: clrldi 3, 3, 32 -; CHECK-NEXT: std 3, 0(6) -; CHECK-NEXT: lxv [[REG1:[0-9]+]], 0(8) -; CHECK-NEXT: xsaddqp 2, [[REG1]], 2 -; CHECK-NEXT: xsaddqp 2, 2, 3 +; CHECK-DAG: lwz r3, 96(r1) +; CHECK: add r4, r7, r9 +; CHECK-NEXT: xxlor v[[REG0:[0-9]+]], f1, f1 +; CHECK-DAG: add r4, r4, r10 +; CHECK: xscvdpqp v[[REG0]], v[[REG0]] +; CHECK-NEXT: add r3, r4, r3 +; CHECK-NEXT: clrldi r3, r3, 32 +; CHECK-NEXT: std r3, 0(r6) +; CHECK-NEXT: lxv v[[REG1:[0-9]+]], 0(r8) +; CHECK-NEXT: xsaddqp v2, v[[REG1]], v2 +; CHECK-NEXT: xsaddqp v2, v2, v3 ; CHECK-NEXT: blr i16 signext %p4, fp128* nocapture readonly %p5, i32 signext %p6, i8 zeroext %p7, i32 zeroext %p8) { @@ -185,16 +185,16 @@ entry: define fastcc fp128 @mixParam_02f(fp128 %p1, double %p2, i64* nocapture %p3, ; CHECK-LABEL: mixParam_02f: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: add 4, 4, 6 -; CHECK-NEXT: xxlor [[REG0:[0-9]+]], 1, 1 -; CHECK-NEXT: add 4, 4, 7 -; CHECK-NEXT: xscvdpqp [[REG0]], [[REG0]] -; CHECK-NEXT: add 4, 4, 8 -; CHECK-NEXT: clrldi 4, 4, 32 -; CHECK-NEXT: std 4, 0(3) -; CHECK-NEXT: lxv [[REG1:[0-9]+]], 0(5) -; CHECK-NEXT: xsaddqp 2, [[REG1]], 2 -; CHECK-NEXT: xsaddqp 2, 2, [[REG0]] +; CHECK-NEXT: add r4, r4, r6 +; CHECK-NEXT: xxlor v[[REG0:[0-9]+]], f1, f1 +; CHECK-NEXT: add r4, r4, r7 +; CHECK-NEXT: xscvdpqp v[[REG0]], v[[REG0]] +; CHECK-NEXT: add r4, r4, r8 +; CHECK-NEXT: clrldi r4, r4, 32 +; CHECK-NEXT: std r4, 0(r3) +; CHECK-NEXT: lxv v[[REG1:[0-9]+]], 0(r5) +; CHECK-NEXT: xsaddqp v2, v[[REG1]], v2 +; CHECK-NEXT: xsaddqp v2, v2, v[[REG0]] ; CHECK-NEXT: blr i16 signext %p4, fp128* nocapture readonly %p5, i32 signext %p6, i8 zeroext %p7, i32 zeroext %p8) { @@ -218,15 +218,15 @@ entry: define void @mixParam_03(fp128 %f1, double* nocapture %d1, <4 x i32> %vec1, ; CHECK-LABEL: mixParam_03: ; CHECK: # %bb.0: # %entry -; CHECK-DAG: ld 3, 104(1) -; CHECK-DAG: mtvsrwa [[REG2:[0-9]+]], 10 -; CHECK-DAG: stxv 2, 0(9) -; CHECK-DAG: xscvsdqp [[REG1:[0-9]+]], [[REG2]] -; CHECK: stxvx 3, 0, 3 -; CHECK-NEXT: lxv 2, 0(9) -; CHECK-NEXT: xsaddqp 2, 2, [[REG1]] -; CHECK-NEXT: xscvqpdp 2, 2 -; CHECK-NEXT: stxsd 2, 0(5) +; CHECK-DAG: ld r3, 104(r1) +; CHECK-DAG: mtvsrwa v[[REG2:[0-9]+]], r10 +; CHECK-DAG: stxv v2, 0(r9) +; CHECK-DAG: xscvsdqp v[[REG1:[0-9]+]], v[[REG2]] +; CHECK: stxvx v3, 0, r3 +; CHECK-NEXT: lxv v2, 0(r9) +; CHECK-NEXT: xsaddqp v2, v2, v[[REG1]] +; CHECK-NEXT: xscvqpdp v2, v2 +; CHECK-NEXT: stxsd v2, 0(r5) ; CHECK-NEXT: blr fp128* nocapture %f2, i32 signext %i1, i8 zeroext %c1, <4 x i32>* nocapture %vec2) { @@ -245,14 +245,14 @@ entry: define fastcc void @mixParam_03f(fp128 %f1, double* nocapture %d1, <4 x i32> %vec1, ; CHECK-LABEL: mixParam_03f: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: mtvsrwa [[REG0:[0-9]+]], 5 -; CHECK-NEXT: stxv [[REG1:[0-9]+]], 0(4) -; CHECK-NEXT: stxv [[REG2:[0-9]+]], 0(7) -; CHECK-NEXT: lxv [[REG1]], 0(4) -; CHECK-NEXT: xscvsdqp [[REG3:[0-9]+]], [[REG0]] -; CHECK-NEXT: xsaddqp [[REG4:[0-9]+]], [[REG1]], [[REG3]] -; CHECK-NEXT: xscvqpdp 2, [[REG4]] -; CHECK-NEXT: stxsd 2, 0(3) +; CHECK-NEXT: mtvsrwa v[[REG0:[0-9]+]], r5 +; CHECK-NEXT: stxv v[[REG1:[0-9]+]], 0(r4) +; CHECK-NEXT: stxv v[[REG2:[0-9]+]], 0(r7) +; CHECK-NEXT: lxv v[[REG1]], 0(r4) +; CHECK-NEXT: xscvsdqp v[[REG3:[0-9]+]], v[[REG0]] +; CHECK-NEXT: xsaddqp v[[REG4:[0-9]+]], v[[REG1]], v[[REG3]] +; CHECK-NEXT: xscvqpdp v2, v[[REG4]] +; CHECK-NEXT: stxsd v2, 0(r3) ; CHECK-NEXT: blr fp128* nocapture %f2, i32 signext %i1, i8 zeroext %c1, <4 x i32>* nocapture %vec2) { diff --git a/test/CodeGen/PowerPC/f128-rounding.ll b/test/CodeGen/PowerPC/f128-rounding.ll index ac0b3be9cd0..063eb1456fd 100644 --- a/test/CodeGen/PowerPC/f128-rounding.ll +++ b/test/CodeGen/PowerPC/f128-rounding.ll @@ -1,5 +1,6 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ -; RUN: -enable-ppc-quad-precision -verify-machineinstrs < %s | FileCheck %s +; RUN: -enable-ppc-quad-precision -verify-machineinstrs \ +; RUN: -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck %s define void @qp_trunc(fp128* nocapture readonly %a, fp128* nocapture %res) { @@ -9,7 +10,7 @@ entry: store fp128 %1, fp128* %res, align 16 ret void ; CHECK-LABEL: qp_trunc -; CHECK: xsrqpi 1, {{[0-9]+}}, {{[0-9]+}}, 1 +; CHECK: xsrqpi 1, v{{[0-9]+}}, v{{[0-9]+}}, 1 ; CHECK: blr } declare fp128 @llvm.trunc.f128(fp128 %Val) @@ -21,7 +22,7 @@ entry: store fp128 %1, fp128* %res, align 16 ret void ; CHECK-LABEL: qp_rint -; CHECK: xsrqpix 0, {{[0-9]+}}, {{[0-9]+}}, 3 +; CHECK: xsrqpix 0, v{{[0-9]+}}, v{{[0-9]+}}, 3 ; CHECK: blr } declare fp128 @llvm.rint.f128(fp128 %Val) @@ -33,7 +34,7 @@ entry: store fp128 %1, fp128* %res, align 16 ret void ; CHECK-LABEL: qp_nearbyint -; CHECK: xsrqpi 0, {{[0-9]+}}, {{[0-9]+}}, 3 +; CHECK: xsrqpi 0, v{{[0-9]+}}, v{{[0-9]+}}, 3 ; CHECK: blr } declare fp128 @llvm.nearbyint.f128(fp128 %Val) @@ -45,7 +46,7 @@ entry: store fp128 %1, fp128* %res, align 16 ret void ; CHECK-LABEL: qp_round -; CHECK: xsrqpi 0, {{[0-9]+}}, {{[0-9]+}}, 0 +; CHECK: xsrqpi 0, v{{[0-9]+}}, v{{[0-9]+}}, 0 ; CHECK: blr } declare fp128 @llvm.round.f128(fp128 %Val) @@ -57,7 +58,7 @@ entry: store fp128 %1, fp128* %res, align 16 ret void ; CHECK-LABEL: qp_floor -; CHECK: xsrqpi 1, {{[0-9]+}}, {{[0-9]+}}, 3 +; CHECK: xsrqpi 1, v{{[0-9]+}}, v{{[0-9]+}}, 3 ; CHECK: blr } declare fp128 @llvm.floor.f128(fp128 %Val) @@ -69,7 +70,7 @@ entry: store fp128 %1, fp128* %res, align 16 ret void ; CHECK-LABEL: qp_ceil -; CHECK: xsrqpi 1, {{[0-9]+}}, {{[0-9]+}}, 2 +; CHECK: xsrqpi 1, v{{[0-9]+}}, v{{[0-9]+}}, 2 ; CHECK: blr } declare fp128 @llvm.ceil.f128(fp128 %Val) diff --git a/test/CodeGen/PowerPC/f128-truncateNconv.ll b/test/CodeGen/PowerPC/f128-truncateNconv.ll index 91e69930849..d5ffea69fac 100644 --- a/test/CodeGen/PowerPC/f128-truncateNconv.ll +++ b/test/CodeGen/PowerPC/f128-truncateNconv.ll @@ -1,6 +1,6 @@ ; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ ; RUN: -verify-machineinstrs -enable-ppc-quad-precision \ -; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s +; RUN: -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s | FileCheck %s @f128Array = global [4 x fp128] [fp128 0xL00000000000000004004C00000000000, fp128 0xLF000000000000000400808AB851EB851, @@ -16,9 +16,9 @@ entry: ret i64 %conv ; CHECK-LABEL: qpConv2sdw -; CHECK: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xscvqpsdz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: mfvsrd 3, [[CONV]] +; CHECK: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xscvqpsdz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: mfvsrd r3, v[[CONV]] ; CHECK-NEXT: blr } @@ -33,11 +33,11 @@ entry: ret void ; CHECK-LABEL: qpConv2sdw_02 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK: lxv [[REG:[0-9]+]], 32([[REG0]]) -; CHECK-NEXT: xscvqpsdz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxsd [[CONV]], 0(3) +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK: lxv v[[REG:[0-9]+]], 32(r[[REG0]]) +; CHECK-NEXT: xscvqpsdz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxsd v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -53,13 +53,13 @@ entry: ret i64 %conv ; CHECK-LABEL: qpConv2sdw_03 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK-DAG: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK-DAG: lxv [[REG1:[0-9]+]], 16([[REG0]]) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK: xsaddqp [[REG]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpsdz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: mfvsrd 3, [[CONV]] +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK-DAG: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 16(r[[REG0]]) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK: xsaddqp v[[REG]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpsdz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: mfvsrd r3, v[[CONV]] ; CHECK-NEXT: blr } @@ -75,11 +75,11 @@ entry: ret void ; CHECK-LABEL: qpConv2sdw_04 -; CHECK-DAG: lxv [[REG1:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK: xsaddqp [[REG]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpsdz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxsd [[CONV]], 0(5) +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK: xsaddqp v[[REG]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpsdz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxsd v[[CONV]], 0(r5) ; CHECK-NEXT: blr } @@ -96,8 +96,8 @@ entry: ret void ; CHECK-LABEL: qpConv2sdw_testXForm -; CHECK: xscvqpsdz [[CONV:[0-9]+]], -; CHECK-NEXT: stxsdx [[CONV]], 3, 4 +; CHECK: xscvqpsdz v[[CONV:[0-9]+]], +; CHECK-NEXT: stxsdx v[[CONV]], r3, r4 ; CHECK-NEXT: blr } @@ -109,9 +109,9 @@ entry: ret i64 %conv ; CHECK-LABEL: qpConv2udw -; CHECK: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xscvqpudz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: mfvsrd 3, [[CONV]] +; CHECK: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xscvqpudz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: mfvsrd r3, v[[CONV]] ; CHECK-NEXT: blr } @@ -126,11 +126,11 @@ entry: ret void ; CHECK-LABEL: qpConv2udw_02 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK: lxv [[REG:[0-9]+]], 32([[REG0]]) -; CHECK-NEXT: xscvqpudz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxsd [[CONV]], 0(3) +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK: lxv v[[REG:[0-9]+]], 32(r[[REG0]]) +; CHECK-NEXT: xscvqpudz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxsd v[[CONV]], 0(r3) ; CHECK-NEXT: blr } @@ -146,13 +146,13 @@ entry: ret i64 %conv ; CHECK-LABEL: qpConv2udw_03 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK-DAG: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK-DAG: lxv [[REG1:[0-9]+]], 16([[REG0]]) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK: xsaddqp [[REG]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpudz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: mfvsrd 3, [[CONV]] +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK-DAG: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 16(r[[REG0]]) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK: xsaddqp v[[REG]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpudz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: mfvsrd r3, v[[CONV]] ; CHECK-NEXT: blr } @@ -168,11 +168,11 @@ entry: ret void ; CHECK-LABEL: qpConv2udw_04 -; CHECK-DAG: lxv [[REG1:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK: xsaddqp [[REG]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpudz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxsd [[CONV]], 0(5) +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK: xsaddqp v[[REG]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpudz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxsd v[[CONV]], 0(r5) ; CHECK-NEXT: blr } @@ -189,8 +189,8 @@ entry: ret void ; CHECK-LABEL: qpConv2udw_testXForm -; CHECK: xscvqpudz [[CONV:[0-9]+]], -; CHECK-NEXT: stxsdx [[CONV]], 3, 4 +; CHECK: xscvqpudz v[[CONV:[0-9]+]], +; CHECK-NEXT: stxsdx v[[CONV]], r3, r4 ; CHECK-NEXT: blr } @@ -202,10 +202,10 @@ entry: ret i32 %conv ; CHECK-LABEL: qpConv2sw -; CHECK: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xscvqpswz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: mfvsrwz [[REG2:[0-9]+]], [[CONV]] -; CHECK-NEXT: extsw 3, [[REG2]] +; CHECK: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xscvqpswz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: mfvsrwz r[[REG2:[0-9]+]], v[[CONV]] +; CHECK-NEXT: extsw r3, r[[REG2]] ; CHECK-NEXT: blr } @@ -220,11 +220,11 @@ entry: ret void ; CHECK-LABEL: qpConv2sw_02 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK: lxv [[REG:[0-9]+]], 32([[REG0]]) -; CHECK-NEXT: xscvqpswz [[CONV:[0-9]+]], [[REG]] -; CHECK-NEXT: stxsiwx [[CONV]], 0, 3 +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK: lxv v[[REG:[0-9]+]], 32(r[[REG0]]) +; CHECK-NEXT: xscvqpswz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxsiwx v[[CONV]], 0, r3 ; CHECK-NEXT: blr } @@ -240,14 +240,14 @@ entry: ret i32 %conv ; CHECK-LABEL: qpConv2sw_03 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK-DAG: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK-DAG: lxv [[REG1:[0-9]+]], 16([[REG0]]) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xsaddqp [[ADD:[0-9]+]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpswz [[CONV:[0-9]+]], [[ADD]] -; CHECK-NEXT: mfvsrwz [[REG2:[0-9]+]], [[CONV]] -; CHECK-NEXT: extsw 3, [[REG2]] +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK-DAG: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 16(r[[REG0]]) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xsaddqp v[[ADD:[0-9]+]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpswz v[[CONV:[0-9]+]], v[[ADD]] +; CHECK-NEXT: mfvsrwz r[[REG2:[0-9]+]], v[[CONV]] +; CHECK-NEXT: extsw r3, r[[REG2]] ; CHECK-NEXT: blr } @@ -263,11 +263,11 @@ entry: ret void ; CHECK-LABEL: qpConv2sw_04 -; CHECK-DAG: lxv [[REG1:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xsaddqp [[ADD:[0-9]+]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpswz [[CONV:[0-9]+]], [[ADD]] -; CHECK-NEXT: stxsiwx [[CONV]], 0, 5 +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xsaddqp v[[ADD:[0-9]+]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpswz v[[CONV:[0-9]+]], v[[ADD]] +; CHECK-NEXT: stxsiwx v[[CONV]], 0, r5 ; CHECK-NEXT: blr } @@ -279,9 +279,9 @@ entry: ret i32 %conv ; CHECK-LABEL: qpConv2uw -; CHECK: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xscvqpuwz [[CONV:[0-9]+]], [[ADD]] -; CHECK-NEXT: mfvsrwz 3, [[CONV]] +; CHECK: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xscvqpuwz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: mfvsrwz r3, v[[CONV]] ; CHECK: blr } @@ -296,11 +296,11 @@ entry: ret void ; CHECK-LABEL: qpConv2uw_02 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK: lxv [[REG:[0-9]+]], 32([[REG0]]) -; CHECK-NEXT: xscvqpuwz [[CONV:[0-9]+]], [[ADD]] -; CHECK-NEXT: stxsiwx [[CONV]], 0, 3 +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK: lxv v[[REG:[0-9]+]], 32(r[[REG0]]) +; CHECK-NEXT: xscvqpuwz v[[CONV:[0-9]+]], v[[REG]] +; CHECK-NEXT: stxsiwx v[[CONV]], 0, r3 ; CHECK: blr } @@ -316,13 +316,13 @@ entry: ret i32 %conv ; CHECK-LABEL: qpConv2uw_03 -; CHECK: addis [[REG0:[0-9]+]], 2, .LC0@toc@ha -; CHECK-DAG: ld [[REG0]], .LC0@toc@l([[REG0]]) -; CHECK-DAG: lxv [[REG1:[0-9]+]], 16([[REG0]]) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xsaddqp [[ADD:[0-9]+]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpuwz [[CONV:[0-9]+]], [[ADD]] -; CHECK-NEXT: mfvsrwz 3, [[CONV]] +; CHECK: addis r[[REG0:[0-9]+]], r2, .LC0@toc@ha +; CHECK-DAG: ld r[[REG0]], .LC0@toc@l(r[[REG0]]) +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 16(r[[REG0]]) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xsaddqp v[[ADD:[0-9]+]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpuwz v[[CONV:[0-9]+]], v[[ADD]] +; CHECK-NEXT: mfvsrwz r3, v[[CONV]] ; CHECK: blr } @@ -338,11 +338,11 @@ entry: ret void ; CHECK-LABEL: qpConv2uw_04 -; CHECK-DAG: lxv [[REG1:[0-9]+]], 0(4) -; CHECK-DAG: lxv [[REG:[0-9]+]], 0(3) -; CHECK-NEXT: xsaddqp [[ADD:[0-9]+]], [[REG]], [[REG1]] -; CHECK-NEXT: xscvqpuwz [[CONV:[0-9]+]], [[ADD]] -; CHECK-NEXT: stxsiwx [[CONV]], 0, 5 +; CHECK-DAG: lxv v[[REG1:[0-9]+]], 0(r4) +; CHECK-DAG: lxv v[[REG:[0-9]+]], 0(r3) +; CHECK-NEXT: xsaddqp v[[ADD:[0-9]+]], v[[REG]], v[[REG1]] +; CHECK-NEXT: xscvqpuwz v[[CONV:[0-9]+]], v[[ADD]] +; CHECK-NEXT: stxsiwx v[[CONV]], 0, r5 ; CHECK: blr } @@ -352,10 +352,10 @@ entry: define signext i16 @qpConv2shw(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2shw: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: extsh 3, 3 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: extsh r3, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -367,11 +367,11 @@ entry: define void @qpConv2shw_02(i16* nocapture %res) { ; CHECK-LABEL: qpConv2shw_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 2, 32(4) -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: stxsihx 2, 0, 3 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v2, 32(r4) +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: stxsihx v2, 0, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds @@ -386,14 +386,14 @@ entry: define signext i16 @qpConv2shw_03(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2shw_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 3, 16(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: extsh 3, 3 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v3, 16(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: extsh r3, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -410,11 +410,11 @@ define void @qpConv2shw_04(fp128* nocapture readonly %a, fp128* nocapture readonly %b, i16* nocapture %res) { ; CHECK-LABEL: qpConv2shw_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: lxv 3, 0(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: stxsihx 2, 0, 5 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: lxv v3, 0(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: stxsihx v2, 0, r5 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -429,10 +429,10 @@ entry: define zeroext i16 @qpConv2uhw(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2uhw: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: clrldi 3, 3, 32 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: clrldi r3, r3, 32 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -444,11 +444,11 @@ entry: define void @qpConv2uhw_02(i16* nocapture %res) { ; CHECK-LABEL: qpConv2uhw_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 2, 32(4) -; CHECK-NEXT: xscvqpuwz 2, 2 -; CHECK-NEXT: stxsihx 2, 0, 3 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v2, 32(r4) +; CHECK-NEXT: xscvqpuwz v2, v2 +; CHECK-NEXT: stxsihx v2, 0, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds @@ -463,14 +463,14 @@ entry: define zeroext i16 @qpConv2uhw_03(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2uhw_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 3, 16(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: clrldi 3, 3, 32 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v3, 16(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: clrldi r3, r3, 32 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -487,11 +487,11 @@ define void @qpConv2uhw_04(fp128* nocapture readonly %a, fp128* nocapture readonly %b, i16* nocapture %res) { ; CHECK-LABEL: qpConv2uhw_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: lxv 3, 0(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpuwz 2, 2 -; CHECK-NEXT: stxsihx 2, 0, 5 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: lxv v3, 0(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpuwz v2, v2 +; CHECK-NEXT: stxsihx v2, 0, r5 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -506,10 +506,10 @@ entry: define signext i8 @qpConv2sb(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2sb: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: extsb 3, 3 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: extsb r3, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -521,11 +521,11 @@ entry: define void @qpConv2sb_02(i8* nocapture %res) { ; CHECK-LABEL: qpConv2sb_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 2, 32(4) -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: stxsibx 2, 0, 3 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v2, 32(r4) +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: stxsibx v2, 0, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds @@ -540,14 +540,14 @@ entry: define signext i8 @qpConv2sb_03(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2sb_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 3, 16(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: extsb 3, 3 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v3, 16(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: extsb r3, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -564,11 +564,11 @@ define void @qpConv2sb_04(fp128* nocapture readonly %a, fp128* nocapture readonly %b, i8* nocapture %res) { ; CHECK-LABEL: qpConv2sb_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: lxv 3, 0(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: stxsibx 2, 0, 5 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: lxv v3, 0(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: stxsibx v2, 0, r5 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -583,10 +583,10 @@ entry: define zeroext i8 @qpConv2ub(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2ub: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: clrldi 3, 3, 32 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: clrldi r3, r3, 32 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -598,11 +598,11 @@ entry: define void @qpConv2ub_02(i8* nocapture %res) { ; CHECK-LABEL: qpConv2ub_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 2, 32(4) -; CHECK-NEXT: xscvqpuwz 2, 2 -; CHECK-NEXT: stxsibx 2, 0, 3 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v2, 32(r4) +; CHECK-NEXT: xscvqpuwz v2, v2 +; CHECK-NEXT: stxsibx v2, 0, r3 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* getelementptr inbounds @@ -617,14 +617,14 @@ entry: define zeroext i8 @qpConv2ub_03(fp128* nocapture readonly %a) { ; CHECK-LABEL: qpConv2ub_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxv 3, 16(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpswz 2, 2 -; CHECK-NEXT: mfvsrwz 3, 2 -; CHECK-NEXT: clrldi 3, 3, 32 +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxv v3, 16(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpswz v2, v2 +; CHECK-NEXT: mfvsrwz r3, v2 +; CHECK-NEXT: clrldi r3, r3, 32 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 @@ -641,11 +641,11 @@ define void @qpConv2ub_04(fp128* nocapture readonly %a, fp128* nocapture readonly %b, i8* nocapture %res) { ; CHECK-LABEL: qpConv2ub_04: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxv 2, 0(3) -; CHECK-NEXT: lxv 3, 0(4) -; CHECK-NEXT: xsaddqp 2, 2, 3 -; CHECK-NEXT: xscvqpuwz 2, 2 -; CHECK-NEXT: stxsibx 2, 0, 5 +; CHECK-NEXT: lxv v2, 0(r3) +; CHECK-NEXT: lxv v3, 0(r4) +; CHECK-NEXT: xsaddqp v2, v2, v3 +; CHECK-NEXT: xscvqpuwz v2, v2 +; CHECK-NEXT: stxsibx v2, 0, r5 ; CHECK-NEXT: blr entry: %0 = load fp128, fp128* %a, align 16 diff --git a/test/CodeGen/PowerPC/f128-vecExtractNconv.ll b/test/CodeGen/PowerPC/f128-vecExtractNconv.ll index ff5be8c8ba2..3ab5ee94142 100644 --- a/test/CodeGen/PowerPC/f128-vecExtractNconv.ll +++ b/test/CodeGen/PowerPC/f128-vecExtractNconv.ll @@ -1,9 +1,10 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \ -; RUN: -verify-machineinstrs -enable-ppc-quad-precision < %s | FileCheck %s -; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-unknown \ -; RUN: -verify-machineinstrs -enable-ppc-quad-precision < %s | \ -; RUN: FileCheck %s -check-prefix=CHECK-BE +; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -ppc-vsr-nums-as-vr \ +; RUN: -ppc-asm-full-reg-names -verify-machineinstrs \ +; RUN: -enable-ppc-quad-precision < %s | FileCheck %s +; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-unknown -ppc-vsr-nums-as-vr \ +; RUN: -ppc-asm-full-reg-names -verify-machineinstrs \ +; RUN: -enable-ppc-quad-precision < %s | FileCheck %s -check-prefix=CHECK-BE ; Vector extract DWord and convert to quad precision. @@ -14,14 +15,14 @@ define void @sdwVecConv2qp(fp128* nocapture %a, <2 x i64> %b) { ; CHECK-LABEL: sdwVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxspltd 34, 34, 1 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xxspltd v2, v2, 1 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: sdwVecConv2qp: -; CHECK-BE: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <2 x i64> %b, i32 0 @@ -34,15 +35,15 @@ entry: define void @sdwVecConv2qp1(fp128* nocapture %a, <2 x i64> %b) { ; CHECK-LABEL: sdwVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: sdwVecConv2qp1: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: xxspltd 34, 34, 1 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: xxspltd v2, v2, 1 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <2 x i64> %b, i32 1 @@ -55,11 +56,11 @@ entry: define void @sdwVecConv2qp_02(fp128* nocapture %a) { ; CHECK-LABEL: sdwVecConv2qp_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC0@toc@ha -; CHECK-NEXT: ld 4, .LC0@toc@l(4) -; CHECK-NEXT: lxsd 2, 0(4) -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: addis r4, r2, .LC0@toc@ha +; CHECK-NEXT: ld r4, .LC0@toc@l(r4) +; CHECK-NEXT: lxsd v2, 0(r4) +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr entry: %0 = load <2 x i64>, <2 x i64>* @sdwVecMem, align 16 @@ -73,9 +74,9 @@ entry: define void @sdwVecConv2qp1_03(fp128* nocapture %a, <2 x i64>* nocapture readonly %b) { ; CHECK-LABEL: sdwVecConv2qp1_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxsd 2, 8(4) -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: lxsd v2, 8(r4) +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr entry: %0 = load <2 x i64>, <2 x i64>* %b, align 16 @@ -89,15 +90,15 @@ entry: define void @udwVecConv2qp(fp128* nocapture %a, <2 x i64> %b) { ; CHECK-LABEL: udwVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxspltd 34, 34, 1 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xxspltd v2, v2, 1 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: udwVecConv2qp: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <2 x i64> %b, i32 0 @@ -110,15 +111,15 @@ entry: define void @udwVecConv2qp1(fp128* nocapture %a, <2 x i64> %b) { ; CHECK-LABEL: udwVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: udwVecConv2qp1: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: xxspltd 34, 34, 1 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: xxspltd v2, v2, 1 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <2 x i64> %b, i32 1 @@ -131,11 +132,11 @@ entry: define void @udwVecConv2qp1_02(fp128* nocapture %a) { ; CHECK-LABEL: udwVecConv2qp1_02: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: addis 4, 2, .LC1@toc@ha -; CHECK-NEXT: ld 4, .LC1@toc@l(4) -; CHECK-NEXT: lxsd 2, 8(4) -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: addis r4, r2, .LC1@toc@ha +; CHECK-NEXT: ld r4, .LC1@toc@l(r4) +; CHECK-NEXT: lxsd v2, 8(r4) +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr entry: %0 = load <2 x i64>, <2 x i64>* @udwVecMem, align 16 @@ -149,9 +150,9 @@ entry: define void @udwVecConv2qp_03(fp128* nocapture %a, <2 x i64>* nocapture readonly %b) { ; CHECK-LABEL: udwVecConv2qp_03: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: lxsd 2, 0(4) -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: lxsd v2, 0(r4) +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr entry: %0 = load <2 x i64>, <2 x i64>* %b, align 16 @@ -167,17 +168,17 @@ entry: define void @swVecConv2qp(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: swVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vspltw 2, 2, 3 -; CHECK-NEXT: vextsw2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vspltw v2, v2, 3 +; CHECK-NEXT: vextsw2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: swVecConv2qp: -; CHECK-BE: vspltw 2, 2, 0 -; CHECK-BE-NEXT: vextsw2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: vspltw v2, v2, 0 +; CHECK-BE-NEXT: vextsw2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 0 @@ -190,16 +191,16 @@ entry: define void @swVecConv2qp1(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: swVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vspltw 2, 2, 2 -; CHECK-NEXT: vextsw2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vspltw v2, v2, 2 +; CHECK-NEXT: vextsw2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: swVecConv2qp1: -; CHECK-BE: vextsw2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: vextsw2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 1 @@ -212,16 +213,16 @@ entry: define void @swVecConv2qp2(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: swVecConv2qp2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextsw2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextsw2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: swVecConv2qp2: -; CHECK-BE: vspltw 2, 2, 2 -; CHECK-BE-NEXT: vextsw2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: vspltw v2, v2, 2 +; CHECK-BE-NEXT: vextsw2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 2 @@ -234,17 +235,17 @@ entry: define void @swVecConv2qp3(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: swVecConv2qp3: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vspltw 2, 2, 0 -; CHECK-NEXT: vextsw2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vspltw v2, v2, 0 +; CHECK-NEXT: vextsw2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: swVecConv2qp3: -; CHECK-BE: vspltw 2, 2, 3 -; CHECK-BE-NEXT: vextsw2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: vspltw v2, v2, 3 +; CHECK-BE-NEXT: vextsw2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 3 @@ -257,15 +258,15 @@ entry: define void @uwVecConv2qp(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: uwVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxextractuw 34, 34, 12 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xxextractuw v2, v2, 12 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: uwVecConv2qp: -; CHECK-BE: xxextractuw 34, 34, 0 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: xxextractuw v2, v2, 0 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 0 @@ -278,15 +279,15 @@ entry: define void @uwVecConv2qp1(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: uwVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxextractuw 34, 34, 8 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xxextractuw v2, v2, 8 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: uwVecConv2qp1: -; CHECK-BE: xxextractuw 34, 34, 4 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: xxextractuw v2, v2, 4 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 1 @@ -299,15 +300,15 @@ entry: define void @uwVecConv2qp2(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: uwVecConv2qp2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxextractuw 34, 34, 4 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xxextractuw v2, v2, 4 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: uwVecConv2qp2: -; CHECK-BE: xxextractuw 34, 34, 8 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: xxextractuw v2, v2, 8 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 2 @@ -320,15 +321,15 @@ entry: define void @uwVecConv2qp3(fp128* nocapture %a, <4 x i32> %b) { ; CHECK-LABEL: uwVecConv2qp3: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: xxextractuw 34, 34, 0 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: xxextractuw v2, v2, 0 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; CHECK-BE-LABEL: uwVecConv2qp3: -; CHECK-BE: xxextractuw 34, 34, 12 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE: xxextractuw v2, v2, 12 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <4 x i32> %b, i32 3 @@ -343,18 +344,18 @@ entry: define void @shwVecConv2qp(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 14 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 14 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 0 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 0 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 0 @@ -367,18 +368,18 @@ entry: define void @shwVecConv2qp1(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 12 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 12 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp1: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 2 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 2 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 1 @@ -391,18 +392,18 @@ entry: define void @shwVecConv2qp2(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 10 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 10 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp2: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 4 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 4 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 2 @@ -415,18 +416,18 @@ entry: define void @shwVecConv2qp3(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp3: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 8 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 8 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp3: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 6 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 6 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 3 @@ -439,18 +440,18 @@ entry: define void @shwVecConv2qp4(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp4: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 6 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 6 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp4: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 8 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 8 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 4 @@ -463,18 +464,18 @@ entry: define void @shwVecConv2qp5(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp5: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 4 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 4 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp5: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 10 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 10 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 5 @@ -487,18 +488,18 @@ entry: define void @shwVecConv2qp6(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp6: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 2 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 2 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp6: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 12 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 12 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 6 @@ -511,18 +512,18 @@ entry: define void @shwVecConv2qp7(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: shwVecConv2qp7: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 0 -; CHECK-NEXT: vextsh2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 0 +; CHECK-NEXT: vextsh2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: shwVecConv2qp7: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 14 -; CHECK-BE-NEXT: vextsh2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 14 +; CHECK-BE-NEXT: vextsh2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 7 @@ -535,16 +536,16 @@ entry: define void @uhwVecConv2qp(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 14 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 14 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 0 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 0 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 0 @@ -557,16 +558,16 @@ entry: define void @uhwVecConv2qp1(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 12 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 12 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp1: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 2 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 2 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 1 @@ -579,16 +580,16 @@ entry: define void @uhwVecConv2qp2(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 10 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 10 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp2: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 4 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 4 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 2 @@ -601,16 +602,16 @@ entry: define void @uhwVecConv2qp3(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp3: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 8 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 8 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp3: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 6 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 6 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 3 @@ -623,16 +624,16 @@ entry: define void @uhwVecConv2qp4(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp4: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 6 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 6 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp4: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 8 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 8 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 4 @@ -645,16 +646,16 @@ entry: define void @uhwVecConv2qp5(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp5: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 4 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 4 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp5: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 10 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 10 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 5 @@ -667,16 +668,16 @@ entry: define void @uhwVecConv2qp6(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp6: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 2 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 2 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp6: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 12 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 12 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 6 @@ -689,16 +690,16 @@ entry: define void @uhwVecConv2qp7(fp128* nocapture %a, <8 x i16> %b) { ; CHECK-LABEL: uhwVecConv2qp7: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractuh 2, 2, 0 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractuh v2, v2, 0 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: uhwVecConv2qp7: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractuh 2, 2, 14 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractuh v2, v2, 14 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <8 x i16> %b, i32 7 @@ -713,18 +714,18 @@ entry: define void @sbVecConv2qp(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 15 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 15 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 0 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 0 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 0 @@ -737,18 +738,18 @@ entry: define void @sbVecConv2qp1(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 14 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 14 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp1: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 1 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 1 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 1 @@ -761,18 +762,18 @@ entry: define void @sbVecConv2qp2(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 13 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 13 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp2: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 2 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 2 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 2 @@ -785,18 +786,18 @@ entry: define void @sbVecConv2qp3(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp3: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 12 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 12 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp3: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 3 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 3 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 3 @@ -809,18 +810,18 @@ entry: define void @sbVecConv2qp4(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp4: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 11 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 11 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp4: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 4 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 4 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 4 @@ -833,18 +834,18 @@ entry: define void @sbVecConv2qp5(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp5: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 10 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 10 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp5: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 5 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 5 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 5 @@ -857,18 +858,18 @@ entry: define void @sbVecConv2qp6(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp6: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 9 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 9 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp6: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 6 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 6 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 6 @@ -881,18 +882,18 @@ entry: define void @sbVecConv2qp7(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp7: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 8 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 8 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp7: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 7 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 7 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 7 @@ -905,18 +906,18 @@ entry: define void @sbVecConv2qp8(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 7 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 7 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp8: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 8 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 8 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 8 @@ -929,18 +930,18 @@ entry: define void @sbVecConv2qp9(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp9: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 6 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 6 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp9: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 9 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 9 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 9 @@ -953,18 +954,18 @@ entry: define void @sbVecConv2qp10(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp10: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 5 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 5 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp10: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 10 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 10 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 10 @@ -977,18 +978,18 @@ entry: define void @sbVecConv2qp11(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp11: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 4 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 4 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp11: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 11 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 11 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 11 @@ -1001,18 +1002,18 @@ entry: define void @sbVecConv2qp12(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp12: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 3 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 3 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp12: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 12 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 12 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 12 @@ -1025,18 +1026,18 @@ entry: define void @sbVecConv2qp13(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp13: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 2 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 2 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp13: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 13 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 13 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 13 @@ -1049,18 +1050,18 @@ entry: define void @sbVecConv2qp14(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp14: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 1 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 1 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp14: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 14 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 14 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 14 @@ -1073,18 +1074,18 @@ entry: define void @sbVecConv2qp15(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: sbVecConv2qp15: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 0 -; CHECK-NEXT: vextsb2d 2, 2 -; CHECK-NEXT: xscvsdqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 0 +; CHECK-NEXT: vextsb2d v2, v2 +; CHECK-NEXT: xscvsdqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: sbVecConv2qp15: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 15 -; CHECK-BE-NEXT: vextsb2d 2, 2 -; CHECK-BE-NEXT: xscvsdqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 15 +; CHECK-BE-NEXT: vextsb2d v2, v2 +; CHECK-BE-NEXT: xscvsdqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 15 @@ -1097,16 +1098,16 @@ entry: define void @ubVecConv2qp(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 15 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 15 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 0 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 0 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 0 @@ -1119,16 +1120,16 @@ entry: define void @ubVecConv2qp1(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp1: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 14 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 14 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp1: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 1 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 1 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 1 @@ -1141,16 +1142,16 @@ entry: define void @ubVecConv2qp2(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp2: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 13 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 13 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp2: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 2 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 2 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 2 @@ -1163,16 +1164,16 @@ entry: define void @ubVecConv2qp3(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp3: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 12 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 12 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp3: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 3 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 3 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 3 @@ -1185,16 +1186,16 @@ entry: define void @ubVecConv2qp4(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp4: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 11 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 11 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp4: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 4 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 4 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 4 @@ -1207,16 +1208,16 @@ entry: define void @ubVecConv2qp5(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp5: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 10 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 10 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp5: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 5 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 5 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 5 @@ -1229,16 +1230,16 @@ entry: define void @ubVecConv2qp6(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp6: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 9 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 9 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp6: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 6 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 6 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 6 @@ -1251,16 +1252,16 @@ entry: define void @ubVecConv2qp7(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp7: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 8 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 8 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp7: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 7 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 7 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 7 @@ -1273,16 +1274,16 @@ entry: define void @ubVecConv2qp8(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp8: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 7 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 7 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp8: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 8 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 8 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 8 @@ -1295,16 +1296,16 @@ entry: define void @ubVecConv2qp9(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp9: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 6 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 6 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp9: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 9 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 9 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 9 @@ -1317,16 +1318,16 @@ entry: define void @ubVecConv2qp10(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp10: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 5 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 5 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp10: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 10 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 10 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 10 @@ -1339,16 +1340,16 @@ entry: define void @ubVecConv2qp11(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp11: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 4 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 4 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp11: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 11 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 11 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 11 @@ -1361,16 +1362,16 @@ entry: define void @ubVecConv2qp12(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp12: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 3 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 3 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp12: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 12 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 12 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 12 @@ -1383,16 +1384,16 @@ entry: define void @ubVecConv2qp13(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp13: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 2 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 2 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp13: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 13 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 13 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 13 @@ -1405,16 +1406,16 @@ entry: define void @ubVecConv2qp14(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp14: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 1 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 1 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp14: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 14 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 14 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 14 @@ -1427,16 +1428,16 @@ entry: define void @ubVecConv2qp15(fp128* nocapture %a, <16 x i8> %b) { ; CHECK-LABEL: ubVecConv2qp15: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: vextractub 2, 2, 0 -; CHECK-NEXT: xscvudqp 2, 2 -; CHECK-NEXT: stxv 34, 0(3) +; CHECK-NEXT: vextractub v2, v2, 0 +; CHECK-NEXT: xscvudqp v2, v2 +; CHECK-NEXT: stxv v2, 0(r3) ; CHECK-NEXT: blr ; ; CHECK-BE-LABEL: ubVecConv2qp15: ; CHECK-BE: # %bb.0: # %entry -; CHECK-BE-NEXT: vextractub 2, 2, 15 -; CHECK-BE-NEXT: xscvudqp 2, 2 -; CHECK-BE-NEXT: stxv 34, 0(3) +; CHECK-BE-NEXT: vextractub v2, v2, 15 +; CHECK-BE-NEXT: xscvudqp v2, v2 +; CHECK-BE-NEXT: stxv v2, 0(r3) ; CHECK-BE-NEXT: blr entry: %vecext = extractelement <16 x i8> %b, i32 15