summaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/AArch64/sext.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/AArch64/sext.ll')
-rw-r--r--llvm/test/CodeGen/AArch64/sext.ll90
1 files changed, 44 insertions, 46 deletions
diff --git a/llvm/test/CodeGen/AArch64/sext.ll b/llvm/test/CodeGen/AArch64/sext.ll
index ce5b80f3e2be..ef6b65cd50a1 100644
--- a/llvm/test/CodeGen/AArch64/sext.ll
+++ b/llvm/test/CodeGen/AArch64/sext.ll
@@ -249,10 +249,10 @@ define <3 x i32> @sext_v3i8_v3i32(<3 x i8> %a) {
; CHECK-GI-LABEL: sext_v3i8_v3i32:
; CHECK-GI: // %bb.0: // %entry
; CHECK-GI-NEXT: sxtb w8, w0
-; CHECK-GI-NEXT: mov v0.s[0], w8
-; CHECK-GI-NEXT: sxtb w8, w1
-; CHECK-GI-NEXT: mov v0.s[1], w8
+; CHECK-GI-NEXT: sxtb w9, w1
+; CHECK-GI-NEXT: fmov s0, w8
; CHECK-GI-NEXT: sxtb w8, w2
+; CHECK-GI-NEXT: mov v0.s[1], w9
; CHECK-GI-NEXT: mov v0.s[2], w8
; CHECK-GI-NEXT: ret
entry:
@@ -306,7 +306,7 @@ define <3 x i32> @sext_v3i16_v3i32(<3 x i16> %a) {
; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
; CHECK-GI-NEXT: smov w8, v0.h[0]
; CHECK-GI-NEXT: smov w9, v0.h[1]
-; CHECK-GI-NEXT: mov v1.s[0], w8
+; CHECK-GI-NEXT: fmov s1, w8
; CHECK-GI-NEXT: smov w8, v0.h[2]
; CHECK-GI-NEXT: mov v1.s[1], w9
; CHECK-GI-NEXT: mov v1.s[2], w8
@@ -411,10 +411,10 @@ define <3 x i32> @sext_v3i10_v3i32(<3 x i10> %a) {
; CHECK-GI-LABEL: sext_v3i10_v3i32:
; CHECK-GI: // %bb.0: // %entry
; CHECK-GI-NEXT: sbfx w8, w0, #0, #10
-; CHECK-GI-NEXT: mov v0.s[0], w8
-; CHECK-GI-NEXT: sbfx w8, w1, #0, #10
-; CHECK-GI-NEXT: mov v0.s[1], w8
+; CHECK-GI-NEXT: sbfx w9, w1, #0, #10
+; CHECK-GI-NEXT: fmov s0, w8
; CHECK-GI-NEXT: sbfx w8, w2, #0, #10
+; CHECK-GI-NEXT: mov v0.s[1], w9
; CHECK-GI-NEXT: mov v0.s[2], w8
; CHECK-GI-NEXT: ret
entry:
@@ -1192,50 +1192,50 @@ define <16 x i64> @sext_v16i10_v16i64(<16 x i10> %a) {
;
; CHECK-GI-LABEL: sext_v16i10_v16i64:
; CHECK-GI: // %bb.0: // %entry
-; CHECK-GI-NEXT: mov v1.s[0], w0
-; CHECK-GI-NEXT: mov v2.s[0], w2
+; CHECK-GI-NEXT: fmov s7, w0
+; CHECK-GI-NEXT: fmov s17, w2
; CHECK-GI-NEXT: ldr s0, [sp]
-; CHECK-GI-NEXT: mov v3.s[0], w4
-; CHECK-GI-NEXT: mov v4.s[0], w6
-; CHECK-GI-NEXT: ldr s5, [sp, #8]
-; CHECK-GI-NEXT: ldr s6, [sp, #16]
-; CHECK-GI-NEXT: ldr s7, [sp, #24]
-; CHECK-GI-NEXT: ldr s16, [sp, #32]
-; CHECK-GI-NEXT: ldr s17, [sp, #40]
-; CHECK-GI-NEXT: ldr s18, [sp, #48]
-; CHECK-GI-NEXT: ldr s19, [sp, #56]
-; CHECK-GI-NEXT: mov v1.s[1], w1
-; CHECK-GI-NEXT: mov v0.s[1], v5.s[0]
-; CHECK-GI-NEXT: mov v2.s[1], w3
-; CHECK-GI-NEXT: mov v3.s[1], w5
-; CHECK-GI-NEXT: mov v4.s[1], w7
-; CHECK-GI-NEXT: mov v6.s[1], v7.s[0]
-; CHECK-GI-NEXT: mov v16.s[1], v17.s[0]
-; CHECK-GI-NEXT: mov v18.s[1], v19.s[0]
+; CHECK-GI-NEXT: fmov s18, w4
+; CHECK-GI-NEXT: fmov s19, w6
+; CHECK-GI-NEXT: ldr s1, [sp, #8]
+; CHECK-GI-NEXT: ldr s2, [sp, #16]
+; CHECK-GI-NEXT: ldr s3, [sp, #24]
+; CHECK-GI-NEXT: ldr s4, [sp, #32]
+; CHECK-GI-NEXT: ldr s5, [sp, #40]
+; CHECK-GI-NEXT: ldr s6, [sp, #48]
+; CHECK-GI-NEXT: ldr s16, [sp, #56]
+; CHECK-GI-NEXT: mov v7.s[1], w1
+; CHECK-GI-NEXT: mov v17.s[1], w3
+; CHECK-GI-NEXT: mov v18.s[1], w5
+; CHECK-GI-NEXT: mov v19.s[1], w7
+; CHECK-GI-NEXT: mov v0.s[1], v1.s[0]
+; CHECK-GI-NEXT: mov v2.s[1], v3.s[0]
+; CHECK-GI-NEXT: mov v4.s[1], v5.s[0]
+; CHECK-GI-NEXT: mov v6.s[1], v16.s[0]
+; CHECK-GI-NEXT: ushll v1.2d, v7.2s, #0
+; CHECK-GI-NEXT: ushll v3.2d, v17.2s, #0
+; CHECK-GI-NEXT: ushll v5.2d, v18.2s, #0
+; CHECK-GI-NEXT: ushll v7.2d, v19.2s, #0
; CHECK-GI-NEXT: ushll v0.2d, v0.2s, #0
-; CHECK-GI-NEXT: ushll v1.2d, v1.2s, #0
; CHECK-GI-NEXT: ushll v2.2d, v2.2s, #0
-; CHECK-GI-NEXT: ushll v3.2d, v3.2s, #0
; CHECK-GI-NEXT: ushll v4.2d, v4.2s, #0
-; CHECK-GI-NEXT: ushll v5.2d, v6.2s, #0
-; CHECK-GI-NEXT: ushll v6.2d, v16.2s, #0
-; CHECK-GI-NEXT: ushll v7.2d, v18.2s, #0
-; CHECK-GI-NEXT: shl v0.2d, v0.2d, #54
+; CHECK-GI-NEXT: ushll v6.2d, v6.2s, #0
; CHECK-GI-NEXT: shl v1.2d, v1.2d, #54
-; CHECK-GI-NEXT: shl v2.2d, v2.2d, #54
; CHECK-GI-NEXT: shl v3.2d, v3.2d, #54
-; CHECK-GI-NEXT: shl v16.2d, v4.2d, #54
; CHECK-GI-NEXT: shl v5.2d, v5.2d, #54
-; CHECK-GI-NEXT: shl v6.2d, v6.2d, #54
; CHECK-GI-NEXT: shl v7.2d, v7.2d, #54
-; CHECK-GI-NEXT: sshr v4.2d, v0.2d, #54
+; CHECK-GI-NEXT: shl v16.2d, v0.2d, #54
+; CHECK-GI-NEXT: shl v17.2d, v2.2d, #54
+; CHECK-GI-NEXT: shl v18.2d, v4.2d, #54
+; CHECK-GI-NEXT: shl v19.2d, v6.2d, #54
; CHECK-GI-NEXT: sshr v0.2d, v1.2d, #54
-; CHECK-GI-NEXT: sshr v1.2d, v2.2d, #54
-; CHECK-GI-NEXT: sshr v2.2d, v3.2d, #54
-; CHECK-GI-NEXT: sshr v3.2d, v16.2d, #54
-; CHECK-GI-NEXT: sshr v5.2d, v5.2d, #54
-; CHECK-GI-NEXT: sshr v6.2d, v6.2d, #54
-; CHECK-GI-NEXT: sshr v7.2d, v7.2d, #54
+; CHECK-GI-NEXT: sshr v1.2d, v3.2d, #54
+; CHECK-GI-NEXT: sshr v2.2d, v5.2d, #54
+; CHECK-GI-NEXT: sshr v3.2d, v7.2d, #54
+; CHECK-GI-NEXT: sshr v4.2d, v16.2d, #54
+; CHECK-GI-NEXT: sshr v5.2d, v17.2d, #54
+; CHECK-GI-NEXT: sshr v6.2d, v18.2d, #54
+; CHECK-GI-NEXT: sshr v7.2d, v19.2d, #54
; CHECK-GI-NEXT: ret
entry:
%c = sext <16 x i10> %a to <16 x i64>
@@ -1245,12 +1245,10 @@ entry:
define <2 x i128> @sext_v2i64_v2i128(<2 x i64> %a) {
; CHECK-SD-LABEL: sext_v2i64_v2i128:
; CHECK-SD: // %bb.0: // %entry
-; CHECK-SD-NEXT: mov x8, v0.d[1]
-; CHECK-SD-NEXT: dup v1.2d, v0.d[1]
+; CHECK-SD-NEXT: mov x2, v0.d[1]
; CHECK-SD-NEXT: fmov x0, d0
-; CHECK-SD-NEXT: fmov x2, d1
; CHECK-SD-NEXT: asr x1, x0, #63
-; CHECK-SD-NEXT: asr x3, x8, #63
+; CHECK-SD-NEXT: asr x3, x2, #63
; CHECK-SD-NEXT: ret
;
; CHECK-GI-LABEL: sext_v2i64_v2i128: