[llvm] [SystemZ] Introduce GNU and HLASM differences to asmwriter and update tests (PR #113369)

via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 22 12:17:30 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-systemz

Author: None (tltao)

<details>
<summary>Changes</summary>

Now that the GNU and HLASM `InstPrinter` paths are separated in https://github.com/llvm/llvm-project/pull/112975, differentiate between them in `SystemZInstrFormats.td`.

The main difference are:
- Tabs converted to space
- Remove space after comma for instruction operands

---

Patch is 53.38 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/113369.diff


15 Files Affected:

- (modified) llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMInstPrinter.cpp (+7-1) 
- (modified) llvm/lib/Target/SystemZ/SystemZInstrFormats.td (+2-1) 
- (modified) llvm/test/CodeGen/SystemZ/call-zos-01.ll (+44-44) 
- (modified) llvm/test/CodeGen/SystemZ/call-zos-02.ll (+2-2) 
- (modified) llvm/test/CodeGen/SystemZ/call-zos-i128.ll (+13-13) 
- (modified) llvm/test/CodeGen/SystemZ/call-zos-vararg.ll (+188-188) 
- (modified) llvm/test/CodeGen/SystemZ/call-zos-vec.ll (+14-14) 
- (modified) llvm/test/CodeGen/SystemZ/mixed-ptr-sizes.ll (+78-78) 
- (modified) llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll (+24-24) 
- (modified) llvm/test/CodeGen/SystemZ/zos-ada.ll (+13-13) 
- (modified) llvm/test/CodeGen/SystemZ/zos-frameaddr.ll (+13-13) 
- (modified) llvm/test/CodeGen/SystemZ/zos-landingpad.ll (+2-2) 
- (modified) llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll (+92-92) 
- (modified) llvm/test/CodeGen/SystemZ/zos-ret-addr.ll (+10-10) 
- (modified) llvm/test/CodeGen/SystemZ/zos-stackpointer.ll (+1-1) 


``````````diff
diff --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMInstPrinter.cpp b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMInstPrinter.cpp
index ed7ff83a3c6df0..e3eb1e608cf334 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMInstPrinter.cpp
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMInstPrinter.cpp
@@ -30,6 +30,12 @@ void SystemZHLASMInstPrinter::printInst(const MCInst *MI, uint64_t Address,
                                         StringRef Annot,
                                         const MCSubtargetInfo &STI,
                                         raw_ostream &O) {
-  printInstruction(MI, Address, O);
+  std::string Str;
+  raw_string_ostream RSO(Str);
+  printInstruction(MI, Address, RSO);
+  // Eat the first tab character and replace it with a space since it is
+  // hardcoded in AsmWriterEmitter::EmitPrintInstruction
+  // TODO: introduce a line prefix member to AsmWriter to avoid this problem
+  O << " " << Str.substr(1, Str.length());
   printAnnotation(O, Annot);
 }
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
index 50f636a8d9686c..6e136b10aed428 100644
--- a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
+++ b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
@@ -18,7 +18,8 @@ class InstSystemZ<int size, dag outs, dag ins, string asmstr,
   dag InOperandList = ins;
   let Size = size;
   let Pattern = pattern;
-  let AsmString = asmstr;
+  // Convert tabs to spaces, and remove space after comma for HLASM syntax
+  let AsmString = !subst("\t", "{\t| }", !subst(", ", "{, |,}", asmstr));
 
   let hasSideEffects = 0;
   let mayLoad = 0;
diff --git a/llvm/test/CodeGen/SystemZ/call-zos-01.ll b/llvm/test/CodeGen/SystemZ/call-zos-01.ll
index fc7a85caa37eb0..7ad1e4c4679ebc 100644
--- a/llvm/test/CodeGen/SystemZ/call-zos-01.ll
+++ b/llvm/test/CodeGen/SystemZ/call-zos-01.ll
@@ -3,14 +3,14 @@
 ; RUN: llc < %s -mtriple=s390x-ibm-zos -mcpu=z10 | FileCheck %s
 
 ; CHECK-LABEL: call_char:
-; CHECK: lghi  1, 8
+; CHECK: lghi  1,8
 define i8 @call_char(){
   %retval = call i8 (i8) @pass_char(i8 8)
   ret i8 %retval
 }
 
 ; CHECK-LABEL: call_short:
-; CHECK: lghi  1, 16
+; CHECK: lghi  1,16
 define i16 @call_short() {
 entry:
   %retval = call i16 (i16) @pass_short(i16 16)
@@ -18,8 +18,8 @@ entry:
 }
 
 ; CHECK-LABEL: call_int:
-; CHECK: lghi  1, 32
-; CHECK: lghi  2, 33
+; CHECK: lghi  1,32
+; CHECK: lghi  2,33
 define i32 @call_int() {
 entry:
   %retval = call i32 (i32, i32) @pass_int(i32 32, i32 33)
@@ -27,9 +27,9 @@ entry:
 }
 
 ; CHECK-LABEL: call_long:
-; CHECK: lghi  1, 64
-; CHECK: lghi  2, 65
-; CHECK: lghi  3, 66
+; CHECK: lghi  1,64
+; CHECK: lghi  2,65
+; CHECK: lghi  3,66
 define i64 @call_long() {
 entry:
   %retval = call i64 (i64, i64, i64) @pass_long(i64 64, i64 65, i64 66)
@@ -37,7 +37,7 @@ entry:
 }
 
 ; CHECK-LABEL: call_ptr:
-; CHECK: lgr 1, 2
+; CHECK: lgr 1,2
 define i32 @call_ptr(ptr %p1, ptr %p2) {
 entry:
   %retval = call i32 (ptr) @pass_ptr(ptr %p2)
@@ -45,9 +45,9 @@ entry:
 }
 
 ; CHECK-LABEL: call_integrals:
-; CHECK: lghi  1, 64
-; CHECK: lghi  2, 32
-; CHECK: lghi  3, 16
+; CHECK: lghi  1,64
+; CHECK: lghi  2,32
+; CHECK: lghi  3,16
 define i64 @call_integrals() {
 entry:
   %retval = call i64 (i64, i32, i16, i64) @pass_integrals0(i64 64, i32 32, i16 16, i64 128)
@@ -55,29 +55,29 @@ entry:
 }
 
 ; CHECK-LABEL: pass_char:
-; CHECK: lgr 3, 1
+; CHECK: lgr 3,1
 define signext i8 @pass_char(i8 signext %arg) {
 entry:
   ret i8 %arg
 }
 
 ; CHECK-LABEL: pass_short:
-; CHECK: lgr 3, 1
+; CHECK: lgr 3,1
 define signext i16 @pass_short(i16 signext %arg) {
 entry:
   ret i16 %arg
 }
 
 ; CHECK-LABEL: pass_int:
-; CHECK: lgr 3, 2
+; CHECK: lgr 3,2
 define signext i32 @pass_int(i32 signext %arg0, i32 signext %arg1) {
 entry:
   ret i32 %arg1
 }
 
 ; CHECK-LABEL: pass_long:
-; CHECK: agr 1, 2
-; CHECK: agr 3, 1
+; CHECK: agr 1,2
+; CHECK: agr 3,1
 define signext i64 @pass_long(i64 signext %arg0, i64 signext %arg1, i64 signext %arg2) {
 entry:
   %N = add i64 %arg0, %arg1
@@ -86,8 +86,8 @@ entry:
 }
 
 ; CHECK-LABEL: pass_integrals0:
-; CHECK: ag  2, 2200(4)
-; CHECK-NEXT: lgr 3, 2
+; CHECK: ag  2,2200(4)
+; CHECK-NEXT: lgr 3,2
 define signext i64 @pass_integrals0(i64 signext %arg0, i32 signext %arg1, i16 signext %arg2, i64 signext %arg3) {
 entry:
   %N = sext i32 %arg1 to i64
@@ -96,7 +96,7 @@ entry:
 }
 
 ; CHECK-LABEL: call_float:
-; CHECK: le 0, 0({{[0-9]}})
+; CHECK: le 0,0({{[0-9]}})
 define float @call_float() {
 entry:
   %ret = call float (float) @pass_float(float 0x400921FB60000000)
@@ -104,8 +104,8 @@ entry:
 }
 
 ; CHECK-LABEL: call_double:
-; CHECK: larl  [[GENREG:[0-9]+]], L#{{CPI[0-9]+_[0-9]+}}
-; CHECK-NEXT: ld  0, 0([[GENREG]])
+; CHECK: larl  [[GENREG:[0-9]+]],L#{{CPI[0-9]+_[0-9]+}}
+; CHECK-NEXT: ld  0,0([[GENREG]])
 define double @call_double() {
 entry:
   %ret = call double (double) @pass_double(double 3.141000e+00)
@@ -113,9 +113,9 @@ entry:
 }
 
 ; CHECK-LABEL: call_longdouble:
-; CHECK: larl  [[GENREG:[0-9]+]], L#{{CPI[0-9]+_[0-9]+}}
-; CHECK-NEXT: ld  0, 0([[GENREG]])
-; CHECK-NEXT: ld  2, 8([[GENREG]])
+; CHECK: larl  [[GENREG:[0-9]+]],L#{{CPI[0-9]+_[0-9]+}}
+; CHECK-NEXT: ld  0,0([[GENREG]])
+; CHECK-NEXT: ld  2,8([[GENREG]])
 define fp128 @call_longdouble() {
 entry:
   %ret = call fp128 (fp128) @pass_longdouble(fp128 0xLE0FC1518450562CD4000921FB5444261)
@@ -123,12 +123,12 @@ entry:
 }
 
 ; CHECK-LABEL: call_floats0
-; CHECK: larl  [[GENREG:[0-9]+]], L#{{CPI[0-9]+_[0-9]+}}
-; CHECK-NEXT: ld  1, 0([[GENREG]])
-; CHECK-NEXT: ld  3, 8([[GENREG]])
-; CHECK: lxr 5, 0
-; CHECK: lxr 0, 1
-; CHECK: lxr 4, 5
+; CHECK: larl  [[GENREG:[0-9]+]],L#{{CPI[0-9]+_[0-9]+}}
+; CHECK-NEXT: ld  1,0([[GENREG]])
+; CHECK-NEXT: ld  3,8([[GENREG]])
+; CHECK: lxr 5,0
+; CHECK: lxr 0,1
+; CHECK: lxr 4,5
 define i64 @call_floats0(fp128 %arg0, double %arg1) {
 entry:
   %ret = call i64 (fp128, fp128, double) @pass_floats0(fp128 0xLE0FC1518450562CD4000921FB5444261, fp128 %arg0, double %arg1)
@@ -136,9 +136,9 @@ entry:
 }
 
 ; CHECK-LABEL: call_floats1
-; CHECK: lxr 1, 0
-; CHECK: ldr 0, 4
-; CHECK: lxr 4, 1
+; CHECK: lxr 1,0
+; CHECK: ldr 0,4
+; CHECK: lxr 4,1
 define i64 @call_floats1(fp128 %arg0, double %arg1) {
 entry:
   %ret = call i64 (double, fp128) @pass_floats1(double %arg1, fp128 %arg0)
@@ -146,8 +146,8 @@ entry:
 }
 
 ; CHECK-LABEL: pass_float:
-; CHECK: larl  1, L#{{CPI[0-9]+_[0-9]+}}
-; CHECK: aeb 0, 0(1)
+; CHECK: larl  1,L#{{CPI[0-9]+_[0-9]+}}
+; CHECK: aeb 0,0(1)
 define float @pass_float(float %arg) {
 entry:
   %X = fadd float %arg, 0x400821FB60000000
@@ -155,8 +155,8 @@ entry:
 }
 
 ; CHECK-LABEL: pass_double:
-; CHECK: larl  1, L#{{CPI[0-9]+_[0-9]+}}
-; CHECK: adb 0, 0(1)
+; CHECK: larl  1,L#{{CPI[0-9]+_[0-9]+}}
+; CHECK: adb 0,0(1)
 define double @pass_double(double %arg) {
 entry:
   %X = fadd double %arg, 1.414213e+00
@@ -164,9 +164,9 @@ entry:
 }
 
 ; CHECK-LABEL: pass_longdouble
-; CHECK: larl  1, L#{{CPI[0-9]+_[0-9]+}}
-; CHECK: lxdb  1, 0(1)
-; CHECK: axbr  0, 1
+; CHECK: larl  1,L#{{CPI[0-9]+_[0-9]+}}
+; CHECK: lxdb  1,0(1)
+; CHECK: axbr  0,1
 define fp128 @pass_longdouble(fp128 %arg) {
 entry:
   %X = fadd fp128 %arg, 0xL10000000000000004000921FB53C8D4F
@@ -174,10 +174,10 @@ entry:
 }
 
 ; CHECK-LABEL: pass_floats0
-; CHECK: larl  1, L#{{CPI[0-9]+_[0-9]+}}
-; CHECK: axbr  0, 4
-; CHECK: axbr  1, 0
-; CHECK: cxbr  1, 5
+; CHECK: larl  1,L#{{CPI[0-9]+_[0-9]+}}
+; CHECK: axbr  0,4
+; CHECK: axbr  1,0
+; CHECK: cxbr  1,5
 define i64 @pass_floats0(fp128 %arg0, fp128 %arg1, double %arg2) {
   %X = fadd fp128 %arg0, %arg1
   %arg2_ext = fpext double %arg2 to fp128
diff --git a/llvm/test/CodeGen/SystemZ/call-zos-02.ll b/llvm/test/CodeGen/SystemZ/call-zos-02.ll
index 29e3e275bedc49..444972fa8765ed 100644
--- a/llvm/test/CodeGen/SystemZ/call-zos-02.ll
+++ b/llvm/test/CodeGen/SystemZ/call-zos-02.ll
@@ -9,9 +9,9 @@ entry:
 define hidden signext i32 @caller2() {
 entry:
 ; CHECK-LABEL:   caller2:
-; CHECK:         brasl 7, caller at PLT   * encoding: [0xc0,0x75,A,A,A,A]
+; CHECK:         brasl 7,caller at PLT   * encoding: [0xc0,0x75,A,A,A,A]
 ; CHECK-NEXT:    * fixup A - offset: 2, value: caller at PLT+2, kind: FK_390_PC32DBL
-; CHECK-NEXT:    bcr     0, 3          * encoding: [0x07,0x03]
+; CHECK-NEXT:    bcr     0,3          * encoding: [0x07,0x03]
   %call = call signext i32 @caller()
   ret i32 %call
 }
diff --git a/llvm/test/CodeGen/SystemZ/call-zos-i128.ll b/llvm/test/CodeGen/SystemZ/call-zos-i128.ll
index 775483374a32f3..98c3d84bc8bf90 100644
--- a/llvm/test/CodeGen/SystemZ/call-zos-i128.ll
+++ b/llvm/test/CodeGen/SystemZ/call-zos-i128.ll
@@ -3,15 +3,15 @@
 ; RUN: llc < %s -mtriple=s390x-ibm-zos -mcpu=z13 | FileCheck %s
 
 ; CHECK-LABEL: call_i128:
-; CHECK-DAG: larl    1, L#CPI0_0
-; CHECK-DAG: vl      0, 0(1), 3
-; CHECK-DAG: vst     0, 2256(4), 3
-; CHECK-DAG: larl    1, L#CPI0_1
-; CHECK-DAG: vl      0, 0(1), 3
-; CHECK-DAG: vst     0, 2272(4), 3
-; CHECK-DAG: la      1, 2288(4)
-; CHECK-DAG: la      2, 2272(4)
-; CHECK-DAG: la      3, 2256(4)
+; CHECK-DAG: larl    1,L#CPI0_0
+; CHECK-DAG: vl      0,0(1),3
+; CHECK-DAG: vst     0,2256(4),3
+; CHECK-DAG: larl    1,L#CPI0_1
+; CHECK-DAG: vl      0,0(1),3
+; CHECK-DAG: vst     0,2272(4),3
+; CHECK-DAG: la      1,2288(4)
+; CHECK-DAG: la      2,2272(4)
+; CHECK-DAG: la      3,2256(4)
 
 define i128 @call_i128() {
 entry:
@@ -20,10 +20,10 @@ entry:
 }
 
 ; CHECK-LABEL: pass_i128:
-; CHECK: vl      0, 0(3), 3
-; CHECK: vl      1, 0(2), 3
-; CHECK: vaq     0, 1, 0
-; CHECK: vst     0, 0(1), 3
+; CHECK: vl      0,0(3),3
+; CHECK: vl      1,0(2),3
+; CHECK: vaq     0,1,0
+; CHECK: vst     0,0(1),3
 define i128 @pass_i128(i128 %arg0, i128 %arg1) {
 entry:
   %N = add i128 %arg0, %arg1
diff --git a/llvm/test/CodeGen/SystemZ/call-zos-vararg.ll b/llvm/test/CodeGen/SystemZ/call-zos-vararg.ll
index 81aedc1a1d7f2d..72f4d79610e0e4 100644
--- a/llvm/test/CodeGen/SystemZ/call-zos-vararg.ll
+++ b/llvm/test/CodeGen/SystemZ/call-zos-vararg.ll
@@ -2,18 +2,18 @@
 ; RUN: llc < %s -mtriple=s390x-ibm-zos -mcpu=z10 | FileCheck %s
 ; RUN: llc < %s -mtriple=s390x-ibm-zos -mcpu=z14 | FileCheck %s -check-prefix=ARCH12
 ; CHECK-LABEL: call_vararg_double0:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    lg 6, 8(5)
-; CHECK-NEXT:    lg 5, 0(5)
-; CHECK-NEXT:    llihf 3, 1074118262
-; CHECK-NEXT:    oilf 3, 3367254360
-; CHECK-NEXT:    lghi 1, 1
-; CHECK-NEXT:    lghi 2, 2
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    lg 6,8(5)
+; CHECK-NEXT:    lg 5,0(5)
+; CHECK-NEXT:    llihf 3,1074118262
+; CHECK-NEXT:    oilf 3,3367254360
+; CHECK-NEXT:    lghi 1,1
+; CHECK-NEXT:    lghi 2,2
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_double0() {
 entry:
@@ -22,21 +22,21 @@ entry:
 }
 
 ; CHECK-LABEL: call_vararg_double1:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    llihf 0, 1074118262
-; CHECK-NEXT:    oilf 0, 3367254360
-; CHECK-NEXT:    lg 6, 8(5)
-; CHECK-NEXT:    lg 5, 0(5)
-; CHECK-NEXT:    llihf 3, 1074340036
-; CHECK-NEXT:    oilf 3, 2611340116
-; CHECK-NEXT:    lghi 1, 1
-; CHECK-NEXT:    lghi 2, 2
-; CHECK-NEXT:    stg 0, 2200(4)
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    llihf 0,1074118262
+; CHECK-NEXT:    oilf 0,3367254360
+; CHECK-NEXT:    lg 6,8(5)
+; CHECK-NEXT:    lg 5,0(5)
+; CHECK-NEXT:    llihf 3,1074340036
+; CHECK-NEXT:    oilf 3,2611340116
+; CHECK-NEXT:    lghi 1,1
+; CHECK-NEXT:    lghi 2,2
+; CHECK-NEXT:    stg 0,2200(4)
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_double1() {
 entry:
@@ -45,17 +45,17 @@ entry:
 }
 
 ; CHECK-LABEL: call_vararg_double2:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    lg 6, 24(5)
-; CHECK-NEXT:    lg 5, 16(5)
-; CHECK-NEXT:    llihf 2, 1074118262
-; CHECK-NEXT:    oilf 2, 3367254360
-; CHECK-NEXT:    lghi 1, 8200
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    lg 6,24(5)
+; CHECK-NEXT:    lg 5,16(5)
+; CHECK-NEXT:    llihf 2,1074118262
+; CHECK-NEXT:    oilf 2,3367254360
+; CHECK-NEXT:    lghi 1,8200
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_double2() {
 entry:
@@ -64,23 +64,23 @@ entry:
 }
 
 ; CHECK-LABEL: call_vararg_double3:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    llihf 0, 1072703839
-; CHECK-NEXT:    oilf 0, 2861204133
-; CHECK-NEXT:    lg 6, 40(5)
-; CHECK-NEXT:    lg 5, 32(5)
-; CHECK-NEXT:    llihf 1, 1074118262
-; CHECK-NEXT:    oilf 1, 3367254360
-; CHECK-NEXT:    llihf 2, 1074340036
-; CHECK-NEXT:    oilf 2, 2611340116
-; CHECK-NEXT:    llihf 3, 1073127358
-; CHECK-NEXT:    oilf 3, 1992864825
-; CHECK-NEXT:    stg 0, 2200(4)
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    llihf 0,1072703839
+; CHECK-NEXT:    oilf 0,2861204133
+; CHECK-NEXT:    lg 6,40(5)
+; CHECK-NEXT:    lg 5,32(5)
+; CHECK-NEXT:    llihf 1,1074118262
+; CHECK-NEXT:    oilf 1,3367254360
+; CHECK-NEXT:    llihf 2,1074340036
+; CHECK-NEXT:    oilf 2,2611340116
+; CHECK-NEXT:    llihf 3,1073127358
+; CHECK-NEXT:    oilf 3,1992864825
+; CHECK-NEXT:    stg 0,2200(4)
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_double3() {
 entry:
@@ -90,17 +90,17 @@ entry:
 
 ;; TODO: The extra COPY after LGDR is unnecessary (machine-scheduler introduces the overlap).
 ; CHECK-LABEL: call_vararg_both0:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    lg 6, 40(5)
-; CHECK-NEXT:    lg 5, 32(5)
-; CHECK-NEXT:    lgdr 0, 0
-; CHECK-NEXT:    lgr 2, 1
-; CHECK-NEXT:    lgr 1, 0
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    lg 6,40(5)
+; CHECK-NEXT:    lg 5,32(5)
+; CHECK-NEXT:    lgdr 0,0
+; CHECK-NEXT:    lgr 2,1
+; CHECK-NEXT:    lgr 1,0
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_both0(i64 %arg0, double %arg1) {
   %retval  = call i64(...) @pass_vararg3(double %arg1, i64 %arg0)
@@ -108,22 +108,22 @@ define i64 @call_vararg_both0(i64 %arg0, double %arg1) {
 }
 
 ; CHECK-LABEL: call_vararg_long_double0:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    larl 1, L#CPI5_0
-; CHECK-NEXT:    ld 0, 0(1)
-; CHECK-NEXT:    ld 2, 8(1)
-; CHECK-NEXT:    lg 6, 8(5)
-; CHECK-NEXT:    lg 5, 0(5)
-; CHECK-NEXT:    lgdr 3, 0
-; CHECK-NEXT:    lghi 1, 1
-; CHECK-NEXT:    lghi 2, 2
-; CHECK-NEXT:    std 0, 2192(4)
-; CHECK-NEXT:    std 2, 2200(4)
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    larl 1,L#CPI5_0
+; CHECK-NEXT:    ld 0,0(1)
+; CHECK-NEXT:    ld 2,8(1)
+; CHECK-NEXT:    lg 6,8(5)
+; CHECK-NEXT:    lg 5,0(5)
+; CHECK-NEXT:    lgdr 3,0
+; CHECK-NEXT:    lghi 1,1
+; CHECK-NEXT:    lghi 2,2
+; CHECK-NEXT:    std 0,2192(4)
+; CHECK-NEXT:    std 2,2200(4)
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_long_double0() {
 entry:
@@ -132,19 +132,19 @@ entry:
 }
 
 ; CHECK-LABEL: call_vararg_long_double1:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    lg 6, 8(5)
-; CHECK-NEXT:    lg 5, 0(5)
-; CHECK-NEXT:    lgdr 3, 0
-; CHECK-NEXT:    lghi 1, 1
-; CHECK-NEXT:    lghi 2, 2
-; CHECK-NEXT:    std 0, 2192(4)
-; CHECK-NEXT:    std 2, 2200(4)
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    lg 6,8(5)
+; CHECK-NEXT:    lg 5,0(5)
+; CHECK-NEXT:    lgdr 3,0
+; CHECK-NEXT:    lghi 1,1
+; CHECK-NEXT:    lghi 2,2
+; CHECK-NEXT:    std 0,2192(4)
+; CHECK-NEXT:    std 2,2200(4)
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_long_double1(fp128 %arg0) {
 entry:
@@ -154,21 +154,21 @@ entry:
 
 ; CHECK-LABEL: call_vararg_long_double2
 ; CHECK-LABEL: call_vararg_long_double2:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    std 4, 2208(4)
-; CHECK-NEXT:    std 6, 2216(4)
-; CHECK-NEXT:    lg 6, 8(5)
-; CHECK-NEXT:    lg 5, 0(5)
-; CHECK-NEXT:    lgdr 3, 0
-; CHECK-NEXT:    lghi 1, 1
-; CHECK-NEXT:    lghi 2, 2
-; CHECK-NEXT:    std 0, 2192(4)
-; CHECK-NEXT:    std 2, 2200(4)
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    std 4,2208(4)
+; CHECK-NEXT:    std 6,2216(4)
+; CHECK-NEXT:    lg 6,8(5)
+; CHECK-NEXT:    lg 5,0(5)
+; CHECK-NEXT:    lgdr 3,0
+; CHECK-NEXT:    lghi 1,1
+; CHECK-NEXT:    lghi 2,2
+; CHECK-NEXT:    std 0,2192(4)
+; CHECK-NEXT:    std 2,2200(4)
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_long_double2(fp128 %arg0, fp128 %arg1) {
 entry:
@@ -177,16 +177,16 @@ entry:
 }
 
 ; CHECK-LABEL: call_vararg_long_double3:
-; CHECK:         stmg 6, 7, 1872(4)
-; CHECK-NEXT:    aghi 4, -192
-; CHECK-NEXT:    lg 6, 40(5)
-; CHECK-NEXT:    lg 5, 32(5)
-; CHECK-NEXT:    lgdr 3, 2
-; CHECK-NEXT:    lgdr 2, 0
-; CHECK-NEXT:    basr 7, 6
-; CHECK-NEXT:    bcr 0, 0
-; CHECK-NEXT:    lg 7, 2072(4)
-; CHECK-NEXT:    aghi 4, 192
+; CHECK:         stmg 6,7,1872(4)
+; CHECK-NEXT:    aghi 4,-192
+; CHECK-NEXT:    lg 6,40(5)
+; CHECK-NEXT:    lg 5,32(5)
+; CHECK-NEXT:    lgdr 3,2
+; CHECK-NEXT:    lgdr 2,0
+; CHECK-NEXT:    basr 7,6
+; CHECK-NEXT:    bcr 0,0
+; CHECK-NEXT:    lg 7,2072(4)
+; CHECK-NEXT:    aghi 4,192
 ; CHECK-NEXT:    b 2(7)
 define i64 @call_vararg_long_double3(fp128 %arg0) {
 entry:
@@ -195,77 +195,77 @@ entry:
 }
 
 ; ARCH12-LABEL: call_vec_vararg_test0
-; ARCH12: vlgvg 3, 24, 1
-; ARCH12: vlgvg 2, 24, 0
-; ARCH12: lghi  1, 1
+; ARCH12: vlgvg 3,24,1
+; ARCH12: vlgvg 2,24,0
+; ARCH12: lghi  1,1
 define void @call_vec_vararg_test0(<2 x double> %v) {
   %retval = call i64(i64, ...) @pass_vararg2(i64 1, <2 x double> %v)
   ret void
 }
 
 ; ARCH12-LABEL: call_vec_vararg_test1
-; ARCH12: larl  1, L#CPI10_0
-; ARCH12: vl    0, 0(1), 3
-; ARCH12: vlgvg 3, 24, 0
-; ARCH12: vrepg 2, 0, 1
-; ARCH12: vst   25, 2208(4), 3
-; ARCH12: vst   24, 2192(4), 3
+; ARCH12: larl  1,L#CPI10_0
+; ARCH12: vl    0,0(1),3
+; ARCH12: vlgvg 3,24,0
+; ARCH12: vrepg 2,0,1
+; ARCH12: vst   25,2208(4),3
+; ARCH12: vst   24,2192(4),3
 define void @call_vec_vararg_test1(<4 x i32> %v, <2 x i64> %w) {
   %retval = call i64(fp128, ...) @pass_vararg1(fp128 0xLE0FC1518450562CD4000921FB5444261, <4 x i32> %v, <2 x i64> %w)
   ret void
 }
 
 ; ARCH12-LABEL: call_vec_char_vararg_straddle
-; ARCH12: vlgvg 3, 24, 0
-; ARCH12: lghi  1, 1
-; ARCH12: lghi  2, 2
-; ARCH12: vst   24, 2192(4), 3
+; ARCH12: vlgvg 3,24,0
+; ARCH12: lghi  1,1
+; ARCH12: lghi  2,2
+; ARCH12: vst   24,2192(4),3
 define void @call_vec_char_vararg_straddle(<16 x i8> %v) {
   %retval = call i64(i64, i64, ...) @pass_vararg0(i64 1, i64 2, <16 x i8> %v)
   ret void
 }
 
 ; ARCH12-LABEL: call_vec_short_vararg_stra...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/113369


More information about the llvm-commits mailing list