[llvm] ba114ab - [AArch64] Add extra SME attribute tests for expanded intrinsics. NFC

David Green via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 22 09:52:01 PDT 2023


Author: David Green
Date: 2023-08-22T17:51:57+01:00
New Revision: ba114abec70fea76f699dd39b9fd3e232b9b0f39

URL: https://github.com/llvm/llvm-project/commit/ba114abec70fea76f699dd39b9fd3e232b9b0f39
DIFF: https://github.com/llvm/llvm-project/commit/ba114abec70fea76f699dd39b9fd3e232b9b0f39.diff

LOG: [AArch64] Add extra SME attribute tests for expanded intrinsics. NFC

See D136361.

Added: 
    

Modified: 
    llvm/test/CodeGen/AArch64/sme-disable-gisel-fisel.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/AArch64/sme-disable-gisel-fisel.ll b/llvm/test/CodeGen/AArch64/sme-disable-gisel-fisel.ll
index cea3a5e6ccf6f4..46ef8f96320a41 100644
--- a/llvm/test/CodeGen/AArch64/sme-disable-gisel-fisel.ll
+++ b/llvm/test/CodeGen/AArch64/sme-disable-gisel-fisel.ll
@@ -357,3 +357,66 @@ define fp128 @f128_call_sm(fp128 %a, fp128 %b) "aarch64_pstate_sm_enabled" nounw
   %res = fadd fp128 %a, %b
   ret fp128 %res
 }
+
+; FIXME: As above this should use Selection DAG to make sure the libcall call is lowered correctly.
+define double @frem_call_za(double %a, double %b) "aarch64_pstate_za_shared" nounwind {
+; CHECK-FISEL-LABEL: frem_call_za:
+; CHECK-FISEL:       // %bb.0:
+; CHECK-FISEL-NEXT:    stp x29, x30, [sp, #-16]! // 16-byte Folded Spill
+; CHECK-FISEL-NEXT:    mov x29, sp
+; CHECK-FISEL-NEXT:    sub sp, sp, #16
+; CHECK-FISEL-NEXT:    rdsvl x8, #1
+; CHECK-FISEL-NEXT:    mov x9, sp
+; CHECK-FISEL-NEXT:    mul x8, x8, x8
+; CHECK-FISEL-NEXT:    sub x9, x9, x8
+; CHECK-FISEL-NEXT:    mov sp, x9
+; CHECK-FISEL-NEXT:    stur x9, [x29, #-16]
+; CHECK-FISEL-NEXT:    sub x9, x29, #16
+; CHECK-FISEL-NEXT:    sturh w8, [x29, #-8]
+; CHECK-FISEL-NEXT:    msr TPIDR2_EL0, x9
+; CHECK-FISEL-NEXT:    bl fmod
+; CHECK-FISEL-NEXT:    smstart za
+; CHECK-FISEL-NEXT:    mrs x8, TPIDR2_EL0
+; CHECK-FISEL-NEXT:    sub x0, x29, #16
+; CHECK-FISEL-NEXT:    cbnz x8, .LBB10_2
+; CHECK-FISEL-NEXT:  // %bb.1:
+; CHECK-FISEL-NEXT:    bl __arm_tpidr2_restore
+; CHECK-FISEL-NEXT:  .LBB10_2:
+; CHECK-FISEL-NEXT:    msr TPIDR2_EL0, xzr
+; CHECK-FISEL-NEXT:    mov sp, x29
+; CHECK-FISEL-NEXT:    ldp x29, x30, [sp], #16 // 16-byte Folded Reload
+; CHECK-FISEL-NEXT:    ret
+;
+; CHECK-GISEL-LABEL: frem_call_za:
+; CHECK-GISEL:       // %bb.0:
+; CHECK-GISEL-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
+; CHECK-GISEL-NEXT:    bl fmod
+; CHECK-GISEL-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
+; CHECK-GISEL-NEXT:    ret
+  %res = frem double %a, %b
+  ret double %res
+}
+
+; FIXME: As above this should use Selection DAG to make sure the libcall is lowered correctly.
+define float @frem_call_sm(float %a, float %b) "aarch64_pstate_sm_enabled" nounwind {
+; CHECK-COMMON-LABEL: frem_call_sm:
+; CHECK-COMMON:       // %bb.0:
+; CHECK-COMMON-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
+; CHECK-COMMON-NEXT:    bl fmodf
+; CHECK-COMMON-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
+; CHECK-COMMON-NEXT:    ret
+  %res = frem float %a, %b
+  ret float %res
+}
+
+; FIXME: As above this should use Selection DAG to make sure the libcall is lowered correctly.
+define float @frem_call_sm_compat(float %a, float %b) "aarch64_pstate_sm_compatible" nounwind {
+; CHECK-COMMON-LABEL: frem_call_sm_compat:
+; CHECK-COMMON:       // %bb.0:
+; CHECK-COMMON-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
+; CHECK-COMMON-NEXT:    bl fmodf
+; CHECK-COMMON-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
+; CHECK-COMMON-NEXT:    ret
+  %res = frem float %a, %b
+  ret float %res
+}


        


More information about the llvm-commits mailing list