comparison test/CodeGen/AArch64/literal_pools_float.ll @ 147:c2174574ed3a

LLVM 10
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 16:55:33 +0900
parents 803732b1fca8
children
comparison
equal deleted inserted replaced
134:3a76565eade5 147:c2174574ed3a
1 ; RUN: llc -verify-machineinstrs -o - %s -mtriple=aarch64-none-linux-gnu -mcpu=cyclone | FileCheck %s 1 ; RUN: llc -verify-machineinstrs -o - %s -mtriple=aarch64-none-linux-gnu -mcpu=cyclone | FileCheck %s
2 ; RUN: llc -verify-machineinstrs -o - %s -mtriple=aarch64-none-linux-gnu -code-model=large -mcpu=cyclone | FileCheck --check-prefix=CHECK-LARGE %s 2 ; RUN: llc -verify-machineinstrs -o - %s -mtriple=aarch64-none-linux-gnu -code-model=large -mcpu=cyclone | FileCheck --check-prefix=CHECK-LARGE %s
3 ; RUN: llc -verify-machineinstrs -o - %s -mtriple=aarch64-none-none-eabi -code-model=tiny -mcpu=cyclone | FileCheck --check-prefix=CHECK-TINY %s
3 ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -mattr=-fp-armv8 | FileCheck --check-prefix=CHECK-NOFP %s 4 ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -mattr=-fp-armv8 | FileCheck --check-prefix=CHECK-NOFP %s
4 ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -code-model=large -mattr=-fp-armv8 | FileCheck --check-prefix=CHECK-NOFP-LARGE %s 5 ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu -code-model=large -mattr=-fp-armv8 | FileCheck --check-prefix=CHECK-NOFP-LARGE %s
6 ; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-none-eabi -code-model=tiny -mattr=-fp-armv8 | FileCheck --check-prefix=CHECK-NOFP-TINY %s
5 7
6 @varfloat = global float 0.0 8 @varfloat = global float 0.0
7 @vardouble = global double 0.0 9 @vardouble = global double 0.0
8 10
9 define void @floating_lits() { 11 define void @floating_lits() {
10 ; CHECK-LABEL: floating_lits: 12 ; CHECK-LABEL: floating_lits:
11 13
12 %floatval = load float, float* @varfloat 14 %floatval = load float, float* @varfloat
13 %newfloat = fadd float %floatval, 128.0 15 %newfloat = fadd float %floatval, 128.0
14 ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI[0-9]+_[0-9]+]] 16 ; CHECK: mov [[W128:w[0-9]+]], #1124073472
15 ; CHECK: ldr [[LIT128:s[0-9]+]], [x[[LITBASE]], {{#?}}:lo12:[[CURLIT]]] 17 ; CHECK: fmov [[LIT128:s[0-9]+]], [[W128]]
16 ; CHECK-NOFP-NOT: ldr {{s[0-9]+}}, 18 ; CHECK-NOFP-NOT: ldr {{s[0-9]+}},
17 19
18 ; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g0_nc:[[CURLIT:.LCPI[0-9]+_[0-9]+]] 20 ; CHECK-TINY: mov [[W128:w[0-9]+]], #1124073472
19 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] 21 ; CHECK-TINE: fmov [[LIT128:s[0-9]+]], [[W128]]
20 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] 22 ; CHECK-NOFP-TINY-NOT: ldr {{s[0-9]+}},
21 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g3:[[CURLIT]] 23
22 ; CHECK-LARGE: ldr {{s[0-9]+}}, [x[[LITADDR]]] 24 ; CHECK-LARGE: mov [[W128:w[0-9]+]], #1124073472
25 ; CHECK-LARGE: fmov [[LIT128:s[0-9]+]], [[W128]]
23 ; CHECK-LARGE: fadd 26 ; CHECK-LARGE: fadd
24 ; CHECK-NOFP-LARGE-NOT: ldr {{s[0-9]+}}, 27 ; CHECK-NOFP-LARGE-NOT: ldr {{s[0-9]+}},
25 ; CHECK-NOFP-LARGE-NOT: fadd 28 ; CHECK-NOFP-LARGE-NOT: fadd
26 29
27 store float %newfloat, float* @varfloat 30 store float %newfloat, float* @varfloat
28 31
29 %doubleval = load double, double* @vardouble 32 %doubleval = load double, double* @vardouble
30 %newdouble = fadd double %doubleval, 129.0 33 %newdouble = fadd double %doubleval, 129.0
31 ; CHECK: adrp x[[LITBASE:[0-9]+]], [[CURLIT:.LCPI[0-9]+_[0-9]+]]
32 ; CHECK: ldr [[LIT129:d[0-9]+]], [x[[LITBASE]], {{#?}}:lo12:[[CURLIT]]]
33 ; CHECK-NOFP-NOT: ldr {{d[0-9]+}}, 34 ; CHECK-NOFP-NOT: ldr {{d[0-9]+}},
35 ; CHECK: mov [[W129:x[0-9]+]], #35184372088832
36 ; CHECK: movk [[W129]], #16480, lsl #48
37 ; CHECK: fmov {{d[0-9]+}}, [[W129]]
34 ; CHECK-NOFP-NOT: fadd 38 ; CHECK-NOFP-NOT: fadd
35 39
36 ; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g0_nc:[[CURLIT:.LCPI[0-9]+_[0-9]+]] 40 ; CHECK-TINY: mov [[W129:x[0-9]+]], #35184372088832
41 ; CHECK-TINY: movk [[W129]], #16480, lsl #48
42 ; CHECK-TINY: fmov {{d[0-9]+}}, [[W129]]
43 ; CHECK-NOFP-TINY-NOT: ldr {{d[0-9]+}},
44 ; CHECK-NOFP-TINY-NOT: fadd
45
46 ; CHECK-LARGE: movz x[[LITADDR:[0-9]+]], #:abs_g0_nc:[[CURLIT:vardouble]]
37 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]] 47 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g1_nc:[[CURLIT]]
38 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]] 48 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g2_nc:[[CURLIT]]
39 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g3:[[CURLIT]] 49 ; CHECK-LARGE: movk x[[LITADDR]], #:abs_g3:[[CURLIT]]
40 ; CHECK-LARGE: ldr {{d[0-9]+}}, [x[[LITADDR]]] 50 ; CHECK-LARGE: ldr {{d[0-9]+}}, [x[[LITADDR]]]
41 ; CHECK-NOFP-LARGE-NOT: ldr {{d[0-9]+}}, 51 ; CHECK-NOFP-LARGE-NOT: ldr {{d[0-9]+}},