|
71 | 71 | ret:
|
72 | 72 | ret void
|
73 | 73 | }
|
| 74 | + |
| 75 | +define void @store_repeated_constants(ptr %lo, ptr %hi) { |
| 76 | +; SSE-LINUX-LABEL: store_repeated_constants: |
| 77 | +; SSE-LINUX: # %bb.0: |
| 78 | +; SSE-LINUX-NEXT: xorps %xmm0, %xmm0 |
| 79 | +; SSE-LINUX-NEXT: movaps %xmm0, 48(%rdi) |
| 80 | +; SSE-LINUX-NEXT: movaps {{.*#+}} xmm1 = [18446744073709551615,0] |
| 81 | +; SSE-LINUX-NEXT: movaps %xmm1, 32(%rdi) |
| 82 | +; SSE-LINUX-NEXT: movaps %xmm1, 16(%rdi) |
| 83 | +; SSE-LINUX-NEXT: movaps %xmm1, (%rdi) |
| 84 | +; SSE-LINUX-NEXT: movaps %xmm0, 32(%rsi) |
| 85 | +; SSE-LINUX-NEXT: movaps %xmm0, 48(%rsi) |
| 86 | +; SSE-LINUX-NEXT: movaps %xmm1, (%rsi) |
| 87 | +; SSE-LINUX-NEXT: movaps {{.*#+}} xmm0 = [0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255] |
| 88 | +; SSE-LINUX-NEXT: movaps %xmm0, 16(%rsi) |
| 89 | +; SSE-LINUX-NEXT: retq |
| 90 | +; |
| 91 | +; SSE-MSVC-LABEL: store_repeated_constants: |
| 92 | +; SSE-MSVC: # %bb.0: |
| 93 | +; SSE-MSVC-NEXT: xorps %xmm0, %xmm0 |
| 94 | +; SSE-MSVC-NEXT: movaps %xmm0, 48(%rcx) |
| 95 | +; SSE-MSVC-NEXT: movaps {{.*#+}} xmm1 = [18446744073709551615,0] |
| 96 | +; SSE-MSVC-NEXT: movaps %xmm1, 32(%rcx) |
| 97 | +; SSE-MSVC-NEXT: movaps %xmm1, 16(%rcx) |
| 98 | +; SSE-MSVC-NEXT: movaps %xmm1, (%rcx) |
| 99 | +; SSE-MSVC-NEXT: movaps %xmm0, 32(%rdx) |
| 100 | +; SSE-MSVC-NEXT: movaps %xmm0, 48(%rdx) |
| 101 | +; SSE-MSVC-NEXT: movaps %xmm1, (%rdx) |
| 102 | +; SSE-MSVC-NEXT: movaps {{.*#+}} xmm0 = [0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255] |
| 103 | +; SSE-MSVC-NEXT: movaps %xmm0, 16(%rdx) |
| 104 | +; SSE-MSVC-NEXT: retq |
| 105 | +; |
| 106 | +; AVX-LINUX-LABEL: store_repeated_constants: |
| 107 | +; AVX-LINUX: # %bb.0: |
| 108 | +; AVX-LINUX-NEXT: vbroadcastf128 {{.*#+}} ymm0 = [18446744073709551615,0,18446744073709551615,0] |
| 109 | +; AVX-LINUX-NEXT: # ymm0 = mem[0,1,0,1] |
| 110 | +; AVX-LINUX-NEXT: vmovaps %ymm0, (%rdi) |
| 111 | +; AVX-LINUX-NEXT: vmovaps {{.*#+}} xmm0 = [18446744073709551615,0] |
| 112 | +; AVX-LINUX-NEXT: vmovaps %ymm0, 32(%rdi) |
| 113 | +; AVX-LINUX-NEXT: vxorps %xmm0, %xmm0, %xmm0 |
| 114 | +; AVX-LINUX-NEXT: vmovaps %ymm0, 32(%rsi) |
| 115 | +; AVX-LINUX-NEXT: vmovaps {{.*#+}} ymm0 = [18446744073709551615,0,0,18446744073709551615] |
| 116 | +; AVX-LINUX-NEXT: vmovaps %ymm0, (%rsi) |
| 117 | +; AVX-LINUX-NEXT: vzeroupper |
| 118 | +; AVX-LINUX-NEXT: retq |
| 119 | +; |
| 120 | +; AVX-MSVC-LABEL: store_repeated_constants: |
| 121 | +; AVX-MSVC: # %bb.0: |
| 122 | +; AVX-MSVC-NEXT: vbroadcastf128 {{.*#+}} ymm0 = [18446744073709551615,0,18446744073709551615,0] |
| 123 | +; AVX-MSVC-NEXT: # ymm0 = mem[0,1,0,1] |
| 124 | +; AVX-MSVC-NEXT: vmovaps %ymm0, (%rcx) |
| 125 | +; AVX-MSVC-NEXT: vmovaps {{.*#+}} xmm0 = [18446744073709551615,0] |
| 126 | +; AVX-MSVC-NEXT: vmovaps %ymm0, 32(%rcx) |
| 127 | +; AVX-MSVC-NEXT: vxorps %xmm0, %xmm0, %xmm0 |
| 128 | +; AVX-MSVC-NEXT: vmovaps %ymm0, 32(%rdx) |
| 129 | +; AVX-MSVC-NEXT: vmovaps {{.*#+}} ymm0 = [18446744073709551615,0,0,18446744073709551615] |
| 130 | +; AVX-MSVC-NEXT: vmovaps %ymm0, (%rdx) |
| 131 | +; AVX-MSVC-NEXT: vzeroupper |
| 132 | +; AVX-MSVC-NEXT: retq |
| 133 | + store volatile <8 x i64> <i64 -1, i64 0, i64 -1, i64 0, i64 -1, i64 0, i64 0, i64 0>, ptr %lo, align 64 |
| 134 | + store volatile <8 x i64> <i64 -1, i64 0, i64 0, i64 -1, i64 0, i64 0, i64 0, i64 0>, ptr %hi, align 64 |
| 135 | + ret void |
| 136 | +} |
0 commit comments