diff options
Diffstat (limited to 'llvm/test/CodeGen/AArch64/sext.ll')
| -rw-r--r-- | llvm/test/CodeGen/AArch64/sext.ll | 90 |
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: |
