aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/RISCV/constpool-known-bits.ll
blob: 85a6de1095a03b6c8ae883fb039b247eff51c8a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -O0 -mtriple=riscv64 -mattr=+m | FileCheck %s --check-prefix=NOPIC
; RUN: llc < %s -O0 -mtriple=riscv64 -mattr=+m -relocation-model=pic | FileCheck %s --check-prefix=PIC

define i64 @test(i32 noundef signext %c, i32 noundef signext %d) {
; NOPIC-LABEL: test:
; NOPIC:       # %bb.0: # %entry
; NOPIC-NEXT:    # kill: def $x11 killed $x10
; NOPIC-NEXT:    slli a0, a0, 32
; NOPIC-NEXT:    srli a1, a0, 32
; NOPIC-NEXT:    lui a0, %hi(.LCPI0_0)
; NOPIC-NEXT:    ld a0, %lo(.LCPI0_0)(a0)
; NOPIC-NEXT:    mul a0, a1, a0
; NOPIC-NEXT:    addi a0, a0, 127
; NOPIC-NEXT:    mul a0, a1, a0
; NOPIC-NEXT:    lui a2, %hi(.LCPI0_1)
; NOPIC-NEXT:    ld a2, %lo(.LCPI0_1)(a2)
; NOPIC-NEXT:    mul a0, a0, a2
; NOPIC-NEXT:    add a0, a0, a1
; NOPIC-NEXT:    lui a1, 1015920
; NOPIC-NEXT:    addi a1, a1, 1541
; NOPIC-NEXT:    slli a1, a1, 16
; NOPIC-NEXT:    addi a1, a1, 1027
; NOPIC-NEXT:    slli a1, a1, 20
; NOPIC-NEXT:    add a0, a0, a1
; NOPIC-NEXT:    ret
;
; PIC-LABEL: test:
; PIC:       # %bb.0: # %entry
; PIC-NEXT:    # kill: def $x11 killed $x10
; PIC-NEXT:    slli a0, a0, 32
; PIC-NEXT:    srli a1, a0, 32
; PIC-NEXT:  .Lpcrel_hi0:
; PIC-NEXT:    auipc a0, %pcrel_hi(.LCPI0_0)
; PIC-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi0)
; PIC-NEXT:    ld a0, 0(a0)
; PIC-NEXT:    mul a0, a1, a0
; PIC-NEXT:    addi a0, a0, 127
; PIC-NEXT:    mul a0, a1, a0
; PIC-NEXT:  .Lpcrel_hi1:
; PIC-NEXT:    auipc a2, %pcrel_hi(.LCPI0_1)
; PIC-NEXT:    addi a2, a2, %pcrel_lo(.Lpcrel_hi1)
; PIC-NEXT:    ld a2, 0(a2)
; PIC-NEXT:    mul a0, a0, a2
; PIC-NEXT:    add a0, a0, a1
; PIC-NEXT:    lui a1, 1015920
; PIC-NEXT:    addi a1, a1, 1541
; PIC-NEXT:    slli a1, a1, 16
; PIC-NEXT:    addi a1, a1, 1027
; PIC-NEXT:    slli a1, a1, 20
; PIC-NEXT:    add a0, a0, a1
; PIC-NEXT:    ret
entry:
  %or1 = or i64 -9191740941672644608, 4096
  %or2 = or i64 -9191740941672644608, 8192
  %or3 = or i64 -9191740941672644608, 16384
  %conv = zext i32 %c to i64
  %donv = zext i32 %d to i64
  %3 = mul i64 %or1, %conv
  %4 = mul i64 %or2, %donv
  %5 = mul i64 %or3, %conv
  %6 = add i64 %3, %4
  %7 = add i64 %6, %5
  %8 = or i64 %5, 127
  %9 = mul i64 %3, %8
  %add = add i64 -9191740941672644608, %9
  %add2 = add i64 %add, %conv
  ret i64 %add2
}