[llvm] e4372c4 - [LoongArch] Pre-commit tests for tls-desc scheduling. NFC (#121538)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 2 19:23:48 PST 2025
Author: ZhaoQi
Date: 2025-01-03T11:23:44+08:00
New Revision: e4372c4454c963c9f52dbf2a10229797f3f1e6fc
URL: https://github.com/llvm/llvm-project/commit/e4372c4454c963c9f52dbf2a10229797f3f1e6fc
DIFF: https://github.com/llvm/llvm-project/commit/e4372c4454c963c9f52dbf2a10229797f3f1e6fc.diff
LOG: [LoongArch] Pre-commit tests for tls-desc scheduling. NFC (#121538)
Code sequence for tls-desc in large code model is not expected to be
scheduled according to psABI 2.30.
A later commit will fix it.
Added:
Modified:
llvm/test/CodeGen/LoongArch/psabi-restricted-scheduling.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/LoongArch/psabi-restricted-scheduling.ll b/llvm/test/CodeGen/LoongArch/psabi-restricted-scheduling.ll
index c7de3dcf2ecfd2..1773b8e0149974 100644
--- a/llvm/test/CodeGen/LoongArch/psabi-restricted-scheduling.ll
+++ b/llvm/test/CodeGen/LoongArch/psabi-restricted-scheduling.ll
@@ -1,4 +1,3 @@
-; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --relocation-model=pic --post-RA-scheduler=0 < %s \
; RUN: | FileCheck %s --check-prefix=MEDIUM_NO_SCH
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --relocation-model=pic --post-RA-scheduler=1 < %s \
@@ -7,6 +6,14 @@
; RUN: | FileCheck %s --check-prefix=LARGE_NO_SCH
; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic --post-RA-scheduler=1 < %s \
; RUN: | FileCheck %s --check-prefix=LARGE_SCH
+; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --relocation-model=pic --enable-tlsdesc \
+; RUN: --post-RA-scheduler=0 < %s | FileCheck %s --check-prefix=MEDIUMDESC_NO_SCH
+; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=medium --relocation-model=pic --enable-tlsdesc \
+; RUN: --post-RA-scheduler=1 < %s | FileCheck %s --check-prefix=MEDIUMDESC_SCH
+; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic --enable-tlsdesc \
+; RUN: --post-RA-scheduler=0 < %s | FileCheck %s --check-prefix=LARGEDESC_NO_SCH
+; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic --enable-tlsdesc \
+; RUN: --post-RA-scheduler=1 < %s | FileCheck %s --check-prefix=LARGEDESC_SCH
@g = dso_local global i64 zeroinitializer, align 4
@G = global i64 zeroinitializer, align 4
@@ -194,3 +201,69 @@ define void @foo() nounwind {
%v_ie = load volatile i64, ptr @ie
ret void
}
+
+define void @baz() nounwind {
+; MEDIUMDESC_NO_SCH-LABEL: baz:
+; MEDIUMDESC_NO_SCH: # %bb.0:
+; MEDIUMDESC_NO_SCH-NEXT: addi.d $sp, $sp, -16
+; MEDIUMDESC_NO_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
+; MEDIUMDESC_NO_SCH-NEXT: pcalau12i $a0, %desc_pc_hi20(gd)
+; MEDIUMDESC_NO_SCH-NEXT: addi.d $a0, $a0, %desc_pc_lo12(gd)
+; MEDIUMDESC_NO_SCH-NEXT: ld.d $ra, $a0, %desc_ld(gd)
+; MEDIUMDESC_NO_SCH-NEXT: jirl $ra, $ra, %desc_call(gd)
+; MEDIUMDESC_NO_SCH-NEXT: add.d $a0, $a0, $tp
+; MEDIUMDESC_NO_SCH-NEXT: ld.d $zero, $a0, 0
+; MEDIUMDESC_NO_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
+; MEDIUMDESC_NO_SCH-NEXT: addi.d $sp, $sp, 16
+; MEDIUMDESC_NO_SCH-NEXT: ret
+;
+; MEDIUMDESC_SCH-LABEL: baz:
+; MEDIUMDESC_SCH: # %bb.0:
+; MEDIUMDESC_SCH-NEXT: addi.d $sp, $sp, -16
+; MEDIUMDESC_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
+; MEDIUMDESC_SCH-NEXT: pcalau12i $a0, %desc_pc_hi20(gd)
+; MEDIUMDESC_SCH-NEXT: addi.d $a0, $a0, %desc_pc_lo12(gd)
+; MEDIUMDESC_SCH-NEXT: ld.d $ra, $a0, %desc_ld(gd)
+; MEDIUMDESC_SCH-NEXT: jirl $ra, $ra, %desc_call(gd)
+; MEDIUMDESC_SCH-NEXT: add.d $a0, $a0, $tp
+; MEDIUMDESC_SCH-NEXT: ld.d $zero, $a0, 0
+; MEDIUMDESC_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
+; MEDIUMDESC_SCH-NEXT: addi.d $sp, $sp, 16
+; MEDIUMDESC_SCH-NEXT: ret
+;
+; LARGEDESC_NO_SCH-LABEL: baz:
+; LARGEDESC_NO_SCH: # %bb.0:
+; LARGEDESC_NO_SCH-NEXT: addi.d $sp, $sp, -16
+; LARGEDESC_NO_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
+; LARGEDESC_NO_SCH-NEXT: pcalau12i $a0, %desc_pc_hi20(gd)
+; LARGEDESC_NO_SCH-NEXT: addi.d $a1, $zero, %desc_pc_lo12(gd)
+; LARGEDESC_NO_SCH-NEXT: lu32i.d $a1, %desc64_pc_lo20(gd)
+; LARGEDESC_NO_SCH-NEXT: lu52i.d $a1, $a1, %desc64_pc_hi12(gd)
+; LARGEDESC_NO_SCH-NEXT: add.d $a0, $a0, $a1
+; LARGEDESC_NO_SCH-NEXT: ld.d $ra, $a0, %desc_ld(gd)
+; LARGEDESC_NO_SCH-NEXT: jirl $ra, $ra, %desc_call(gd)
+; LARGEDESC_NO_SCH-NEXT: add.d $a0, $a0, $tp
+; LARGEDESC_NO_SCH-NEXT: ld.d $zero, $a0, 0
+; LARGEDESC_NO_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
+; LARGEDESC_NO_SCH-NEXT: addi.d $sp, $sp, 16
+; LARGEDESC_NO_SCH-NEXT: ret
+;
+; LARGEDESC_SCH-LABEL: baz:
+; LARGEDESC_SCH: # %bb.0:
+; LARGEDESC_SCH-NEXT: addi.d $sp, $sp, -16
+; LARGEDESC_SCH-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill
+; LARGEDESC_SCH-NEXT: addi.d $a1, $zero, %desc_pc_lo12(gd)
+; LARGEDESC_SCH-NEXT: pcalau12i $a0, %desc_pc_hi20(gd)
+; LARGEDESC_SCH-NEXT: lu32i.d $a1, %desc64_pc_lo20(gd)
+; LARGEDESC_SCH-NEXT: lu52i.d $a1, $a1, %desc64_pc_hi12(gd)
+; LARGEDESC_SCH-NEXT: add.d $a0, $a0, $a1
+; LARGEDESC_SCH-NEXT: ld.d $ra, $a0, %desc_ld(gd)
+; LARGEDESC_SCH-NEXT: jirl $ra, $ra, %desc_call(gd)
+; LARGEDESC_SCH-NEXT: add.d $a0, $a0, $tp
+; LARGEDESC_SCH-NEXT: ld.d $zero, $a0, 0
+; LARGEDESC_SCH-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload
+; LARGEDESC_SCH-NEXT: addi.d $sp, $sp, 16
+; LARGEDESC_SCH-NEXT: ret
+ %v_gd = load volatile i64, ptr @gd
+ ret void
+}
More information about the llvm-commits
mailing list