brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 6a5f65a Raw
137 lines · plain
1; RUN: llc -mtriple=mips < %s | FileCheck %s -check-prefixes=ALL,MIPS2; RUN: llc -mtriple=mips < %s -mattr=+micromips | FileCheck %s -check-prefixes=ALL,MM3 4; Test the patterns used for constant materialization.5 6; Constants generated using li167define i32 @Li16LowBoundary() {8entry:9  ; ALL-LABEL: Li16LowBoundary:10  ; MIPS:     addiu	$2, $zero, -111  ; MM:       li16	$2, -112  ; ALL-NOT:  lui13  ; ALL-NOT:  ori14  ; MIPS-NOT: li1615  ; MM-NOT:   addiu16 17  ret i32 -118}19 20define i32 @Li16HighBoundary() {21entry:22  ; ALL-LABEL: Li16HighBoundary:23  ; MIPS:     addiu	$2, $zero, 12624  ; MM:       li16	$2, 12625  ; ALL-NOT:  lui26  ; ALL-NOT:  ori27  ; MM-NOT:   addiu28  ; MIPS-NOT: li1629 30  ret i32 12631}32 33; Constants generated using addiu34define i32 @AddiuLowBoundary() {35entry:36  ; ALL-LABEL: AddiuLowBoundary:37  ; ALL:      addiu	$2, $zero, -3276838  ; ALL-NOT:  lui39  ; ALL-NOT:  ori40  ; ALL-NOT:  li1641 42  ret i32 -3276843}44 45define i32 @AddiuZero() {46entry:47  ; ALL-LABEL: AddiuZero:48  ; MIPS:     addiu	$2, $zero, 049  ; MM:       li16	$2, 050  ; ALL-NOT:  lui51  ; ALL-NOT:  ori52  ; MIPS-NOT: li1653  ; MM-NOT:   addiu54 55  ret i32 056}57 58define i32 @AddiuHighBoundary() {59entry:60  ; ALL-LABEL: AddiuHighBoundary:61  ; ALL:     addiu	$2, $zero, 3276762  ; ALL-NOT: lui63  ; ALL-NOT: ori64  ; ALL-NOT: li1665 66  ret i32 3276767}68 69; Constants generated using ori70define i32 @OriLowBoundary() {71entry:72  ; ALL-LABEL: OriLowBoundary:73  ; ALL:     ori	$2, $zero, 3276874  ; ALL-NOT: addiu75  ; ALL-NOT: lui76  ; ALL-NOT: li1677 78  ret i32 3276879}80 81define i32 @OriHighBoundary() {82entry:83  ; ALL-LABEL: OriHighBoundary:84  ; ALL:     ori	$2, $zero, 6553585  ; ALL-NOT: addiu86  ; ALL-NOT: lui87  ; ALL-NOT: li1688 89  ret i32 6553590}91 92; Constants generated using lui93define i32 @LuiPositive() {94entry:95  ; ALL-LABEL: LuiPositive:96  ; ALL:     lui	$2, 197  ; ALL-NOT: addiu98  ; ALL-NOT: ori99  ; ALL-NOT: li16100 101  ret i32 65536102}103 104define i32 @LuiNegative() {105entry:106  ; ALL-LABEL: LuiNegative:107  ; ALL:     lui	$2, 65535108  ; ALL-NOT: addiu109  ; ALL-NOT: ori110  ; ALL-NOT: li16111 112  ret i32 -65536113}114 115; Constants generated using a combination of lui and ori116define i32 @LuiWithLowBitsSet() {117entry:118  ; ALL-LABEL: LuiWithLowBitsSet:119  ; ALL:     lui	$1, 1120  ; ALL:     ori	$2, $1, 1121  ; ALL-NOT: addiu122  ; ALL-NOT: li16123 124  ret i32 65537125}126 127define i32 @BelowAddiuLowBoundary() {128entry:129  ; ALL-LABEL: BelowAddiuLowBoundary:130  ; ALL:     lui	$1, 65535131  ; ALL:     ori	$2, $1, 32767132  ; ALL-NOT: addiu133  ; ALL-NOT: li16134 135  ret i32 -32769136}137