105 lines · plain
1; Three variants of "MSVC" environments.2; RUN: llc < %s -mattr=sse2 -mattr=avx | FileCheck %s3; RUN: llc < %s -mtriple=x86_64-win32 -mattr=sse2 -mattr=avx | FileCheck %s4; RUN: llc < %s -mtriple=x86_64-windows-msvc -mattr=sse2 -mattr=avx | FileCheck %s5; GNU environment.6; RUN: llc < %s -mtriple=x86_64-win32-gnu -mattr=sse2 -mattr=avx | FileCheck -check-prefix=MINGW %s7target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"8target triple = "x86_64-pc-win32"9 10define double @double() {11 ret double 0x000000000080000012}13; CHECK: .globl __real@000000000080000014; CHECK-NEXT: .section .rdata,"dr",discard,__real@000000000080000015; CHECK-NEXT: .p2align 316; CHECK-NEXT: __real@0000000000800000:17; CHECK-NEXT: .quad 0x000000000080000018; CHECK: double:19; CHECK: movsd __real@0000000000800000(%rip), %xmm020; CHECK-NEXT: ret21 22; MINGW: .section .rdata,"dr"23; MINGW-NEXT: .p2align 324; MINGW-NEXT: [[LABEL:\.LC.*]]:25; MINGW-NEXT: .quad 0x000000000080000026; MINGW: double:27; MINGW: movsd [[LABEL]](%rip), %xmm028; MINGW-NEXT: ret29 30define <4 x i32> @vec1() {31 ret <4 x i32> <i32 3, i32 2, i32 1, i32 0>32}33; CHECK: .globl __xmm@0000000000000001000000020000000334; CHECK-NEXT: .section .rdata,"dr",discard,__xmm@0000000000000001000000020000000335; CHECK-NEXT: .p2align 436; CHECK-NEXT: __xmm@00000000000000010000000200000003:37; CHECK-NEXT: .long 338; CHECK-NEXT: .long 239; CHECK-NEXT: .long 140; CHECK-NEXT: .long 041; CHECK: vec1:42; CHECK: movaps __xmm@00000000000000010000000200000003(%rip), %xmm043; CHECK-NEXT: ret44 45define <8 x i16> @vec2() {46 ret <8 x i16> <i16 7, i16 6, i16 5, i16 4, i16 3, i16 2, i16 1, i16 0>47}48; CHECK: .globl __xmm@0000000100020003000400050006000749; CHECK-NEXT: .section .rdata,"dr",discard,__xmm@0000000100020003000400050006000750; CHECK-NEXT: .p2align 451; CHECK-NEXT: __xmm@00000001000200030004000500060007:52; CHECK-NEXT: .short 753; CHECK-NEXT: .short 654; CHECK-NEXT: .short 555; CHECK-NEXT: .short 456; CHECK-NEXT: .short 357; CHECK-NEXT: .short 258; CHECK-NEXT: .short 159; CHECK-NEXT: .short 060; CHECK: vec2:61; CHECK: movaps __xmm@00000001000200030004000500060007(%rip), %xmm062; CHECK-NEXT: ret63 64 65define <4 x float> @undef1() {66 ret <4 x float> <float 1.0, float 1.0, float undef, float undef>67 68; CHECK: .globl __real@3f80000069; CHECK-NEXT: .section .rdata,"dr",discard,__real@3f80000070; CHECK-NEXT: .p2align 271; CHECK-NEXT: __real@3f800000:72; CHECK-NEXT: .long 0x3f800000 # float 173; CHECK-NEXT: .text74; CHECK: undef1:75; CHECK: vbroadcastss __real@3f800000(%rip), %xmm076; CHECK-NEXT: ret77}78 79define float @pr23966(i32 %a) {80 %tobool = icmp ne i32 %a, 081 %sel = select i1 %tobool, float -1.000000e+00, float 1.000000e+0082 ret float %sel83}84 85; CHECK: .globl __real@bf8000003f80000086; CHECK-NEXT: .section .rdata,"dr",discard,__real@bf8000003f80000087; CHECK-NEXT: .p2align 388; CHECK-NEXT: __real@bf8000003f800000:89; CHECK-NEXT: .long 0x3f80000090; CHECK-NEXT: .long 0xbf80000091 92define <4 x i64> @ymm() {93entry:94 ret <4 x i64> <i64 8589934593, i64 17179869187, i64 8589934593, i64 17179869187>95}96 97; CHECK: .globl __ymm@000000040000000300000002000000010000000400000003000000020000000198; CHECK: .section .rdata,"dr",discard,__ymm@000000040000000300000002000000010000000400000003000000020000000199; CHECK: .p2align 5100; CHECK: __ymm@0000000400000003000000020000000100000004000000030000000200000001:101; CHECK: .quad 8589934593 # 0x200000001102; CHECK: .quad 17179869187 # 0x400000003103; CHECK: .quad 8589934593 # 0x200000001104; CHECK: .quad 17179869187105