1; RUN: llc < %s -mtriple=x86_64-win32 -mattr=sse2 -mattr=avx | FileCheck %s 2target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 3target triple = "x86_64-pc-windows-msvc" 4 5define double @double() { 6 ret double 0x0000000000800000 7} 8; CHECK: .globl __real@0000000000800000 9; CHECK-NEXT: .section .rdata,"dr",discard,__real@0000000000800000 10; CHECK-NEXT: .p2align 3 11; CHECK-NEXT: __real@0000000000800000: 12; CHECK-NEXT: .quad 8388608 13; CHECK: double: 14; CHECK: movsd __real@0000000000800000(%rip), %xmm0 15; CHECK-NEXT: ret 16 17define <4 x i32> @vec1() { 18 ret <4 x i32> <i32 3, i32 2, i32 1, i32 0> 19} 20; CHECK: .globl __xmm@00000000000000010000000200000003 21; CHECK-NEXT: .section .rdata,"dr",discard,__xmm@00000000000000010000000200000003 22; CHECK-NEXT: .p2align 4 23; CHECK-NEXT: __xmm@00000000000000010000000200000003: 24; CHECK-NEXT: .long 3 25; CHECK-NEXT: .long 2 26; CHECK-NEXT: .long 1 27; CHECK-NEXT: .long 0 28; CHECK: vec1: 29; CHECK: movaps __xmm@00000000000000010000000200000003(%rip), %xmm0 30; CHECK-NEXT: ret 31 32define <8 x i16> @vec2() { 33 ret <8 x i16> <i16 7, i16 6, i16 5, i16 4, i16 3, i16 2, i16 1, i16 0> 34} 35; CHECK: .globl __xmm@00000001000200030004000500060007 36; CHECK-NEXT: .section .rdata,"dr",discard,__xmm@00000001000200030004000500060007 37; CHECK-NEXT: .p2align 4 38; CHECK-NEXT: __xmm@00000001000200030004000500060007: 39; CHECK-NEXT: .short 7 40; CHECK-NEXT: .short 6 41; CHECK-NEXT: .short 5 42; CHECK-NEXT: .short 4 43; CHECK-NEXT: .short 3 44; CHECK-NEXT: .short 2 45; CHECK-NEXT: .short 1 46; CHECK-NEXT: .short 0 47; CHECK: vec2: 48; CHECK: movaps __xmm@00000001000200030004000500060007(%rip), %xmm0 49; CHECK-NEXT: ret 50 51 52define <4 x float> @undef1() { 53 ret <4 x float> <float 1.0, float 1.0, float undef, float undef> 54 55; CHECK: .globl __xmm@00000000000000003f8000003f800000 56; CHECK-NEXT: .section .rdata,"dr",discard,__xmm@00000000000000003f8000003f800000 57; CHECK-NEXT: .p2align 4 58; CHECK-NEXT: __xmm@00000000000000003f8000003f800000: 59; CHECK-NEXT: .long 1065353216 # float 1 60; CHECK-NEXT: .long 1065353216 # float 1 61; CHECK-NEXT: .zero 4 62; CHECK-NEXT: .zero 4 63; CHECK: undef1: 64; CHECK: movaps __xmm@00000000000000003f8000003f800000(%rip), %xmm0 65; CHECK-NEXT: ret 66} 67 68define float @pr23966(i32 %a) { 69 %tobool = icmp ne i32 %a, 0 70 %sel = select i1 %tobool, float -1.000000e+00, float 1.000000e+00 71 ret float %sel 72} 73 74; CHECK: .globl __real@bf8000003f800000 75; CHECK-NEXT: .section .rdata,"dr",discard,__real@bf8000003f800000 76; CHECK-NEXT: .p2align 3 77; CHECK-NEXT: __real@bf8000003f800000: 78; CHECK-NEXT: .long 1065353216 79; CHECK-NEXT: .long 3212836864 80 81define <4 x i64> @ymm() { 82entry: 83 ret <4 x i64> <i64 8589934593, i64 17179869187, i64 8589934593, i64 17179869187> 84} 85 86; CHECK: .globl __ymm@0000000400000003000000020000000100000004000000030000000200000001 87; CHECK: .section .rdata,"dr",discard,__ymm@0000000400000003000000020000000100000004000000030000000200000001 88; CHECK: .p2align 5 89; CHECK: __ymm@0000000400000003000000020000000100000004000000030000000200000001: 90; CHECK: .quad 8589934593 # 0x200000001 91; CHECK: .quad 17179869187 # 0x400000003 92; CHECK: .quad 8589934593 # 0x200000001 93; CHECK: .quad 17179869187 94