[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.
This commit is contained in:
ZhaoQi
2025-01-03 11:23:44 +08:00
committed by GitHub
parent 9df375e5ea
commit e4372c4454

View File

@@ -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
}