/* Checks the special cases for FCVT and LSL. Has invalid usages. Diagnosis required. */ .text .arch armv8-a+sve f: .macro test_cvt, insn /* Not OK, 64-bit operation, upper 32-bits cleared. */ movprfx Z0.S, P1/M, Z1.S \insn Z0.S, P1/M, Z2.D /* OK, 64-bit operation, upper 32-bits cleared. */ movprfx Z0.D, P1/M, Z1.D \insn Z0.S, P1/M, Z2.D /* Not OK, 64-bit operation ignoring 32-bits. */ movprfx Z0.S, P1/M, Z1.S \insn Z0.D, P1/M, Z2.S /* OK, 64-bit operation ignoring 32-bits. */ movprfx Z0.D, P1/M, Z1.D \insn Z0.D, P1/M, Z2.S .endm test_cvt .macro test_shift, insn /* OK, 8-bit operation. */ movprfx Z0.B, P1/M, Z1.B \insn Z0.B, P1/M, Z0.B, Z2.D /* Not Ok, destination register sizes don't match. */ movprfx Z0.D, P1/M, Z1.D \insn Z0.B, P1/M, Z0.B, Z2.D .endm test_shift test_cvt fcvt test_cvt fcvtzs test_cvt fcvtzu test_cvt scvtf test_cvt ucvtf test_shift lsl test_shift lsr test_shift asr ret